Dictionary<TKey,TValue>Class
Dictionary<TKey,TValue>Class (네임스페이스 : System.Collections.Generic)
: 값을 키와 함께 받아 HashTable에 저장한다.
: 키 값을 통해 데이터를 빠르게 검색 가능(키 값에 따라 검색 속도는 다르다)
: Add를 사용하여 키와 값을 저장
TKey : 사전에 있는 키의 형식
TValue : 사전에 있는 값의 형식
상속 : Object -> Dictionary<TKey,TValue>
파생 : System.ServiceModel.MessageQuerySet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Test_01 { class Program { static void Main(string[] args) { Dictionary<string, string> Test = new Dictionary<string, string>(); Test.Add("key", "value"); Test.Add("양재", "공부좀해"); Test.Add("코딩", "잘하고싶다"); //요소 추가 try { Test.Add("txt", "winword.exe"); } catch(ArgumentException) { Console.WriteLine("an element with Key = \"txt\" already exists."); } // 중복키일 경우 ArgumentException 발생 Console.WriteLine("for key = \"코딩\", value = {0}.", Test["코딩"]); //출력 : for key = 코딩, value = 잘하고싶다 } } } | cs |
'C# > 과제' 카테고리의 다른 글
속성 (0) | 2019.04.03 |
---|---|
[Collection]ArrayList (0) | 2019.04.01 |
//미완// Collection[컬렉션] (0) | 2019.03.31 |
Boxing 및 Unboxing (0) | 2019.03.29 |
(3.25) 몬스터 공격하기 ver.수정 (0) | 2019.03.26 |
읽기전용(get 포함 , set 미포함)[속성이란]
: 전용필드의 값을 읽기(get),쓰기(set),계산하는 유연한 메커니즘을 제공하는 멤버
접근자라는 특수 메서드이다.
메서드의 안정성, 유연성 수준을 올리는데 도움을 준다.
[개요]
클래스구현, 검증코드를 숨기는 동시에 값을 가져오고 설정방법을 공개적으로 노출할 수 있다.
get속성 접근자 : 속성값반환하는데 사용 (읽기전용(get 포함 , set 미포함))
: private필드의 값을 반환
set속성 접근자 : 새 값을 할당하는데 사용 (쓰기전용(set포함, get미포함))
:private필드의 값을 할당 전 데이터 유효성 검사
value키워드 : set접근자가 할당하는 값을 정의
'C# > 과제' 카테고리의 다른 글
Dictionary<TKey,TValue>Class (0) | 2019.04.03 |
---|---|
[Collection]ArrayList (0) | 2019.04.01 |
//미완// Collection[컬렉션] (0) | 2019.03.31 |
Boxing 및 Unboxing (0) | 2019.03.29 |
(3.25) 몬스터 공격하기 ver.수정 (0) | 2019.03.26 |
[Collection]ArrayList
[ArrayList] : 사용하지 않는것을 권장함
배열과 유사한 collection(배열 : 고정된개수, ArrayList : 동적)
상속 : Object -> ArrayList
List와 흡사하지만 ArrayList는 Object Type으로 구성(모든type변수를 담을 수 있다)되어 있으며
데이터활용 시 Boxing과Unboxing이 불가피하므로 형식의 불안정성 증가 및 속도저하가 List보다 훨씬 크다.
필요에 따라 동적으로 증가
인덱스로 컬렉션 요소에 접근이 가능하고 특정요소를 바로 읽고 쓰기가능
[ArrayList 함수] : 변수를 가지고있다.
Add() :개체를 Array 끝부분에 추가합니다 (값은 null이 될 수 있다)
1 2 3 4 5 6 7 8 9 10 11 12 | ArrayList arrFruits = new ArrayList(); var idx = arrFruits.Add("사과"); Console.WriteLine("idx ; {0}", idx); arrFruits.Add("오렌지"); arrFruits.Add("포도"); Console.WriteLine(arrFruits); //출력값 : arrFruits의 인스턴스 //Add메서드 , 반환타입 : int , 매개변수 Object foreach(Object list in arrFruits) { Console.WriteLine(list); } | cs |
AddRange() : 끝 부분에 ICollector의 요소를 복사
Insert() : 지정된 인덱스에 요소 삽입
Remove() : 맨 처음 발견된 요소 삭제
RemoveAt() : 지정된 인덱스에서 요소 삭제
BinarySearch() : 이진 검색하여 특정요소 찾기 (검색 전 Sorting)
Reverse() : 순서를 반대로 전환
Sort() : 정렬
Contain() : 요소가 ArrayList에 있는지 확인
Clear() : 모든요소 삭제
'C# > 과제' 카테고리의 다른 글
Dictionary<TKey,TValue>Class (0) | 2019.04.03 |
---|---|
속성 (0) | 2019.04.03 |
//미완// Collection[컬렉션] (0) | 2019.03.31 |
Boxing 및 Unboxing (0) | 2019.03.29 |
(3.25) 몬스터 공격하기 ver.수정 (0) | 2019.03.26 |
//미완// Collection[컬렉션]
Collection이란? (자료구조 모음)
개체 그룹을 만들고 관리한다
[개체를 그룹화 하는 방법 2가지]
1. 개체배열생성
2. 개체컬렉션생성
작업하는 개체그룹이 동적으로 확장, 축소
일부 컬렉션의 경우 모든개체의 키를 할당하여 개체를 빠르게 검색 가능
클래스이므로 요소 추가 시 인스턴스를 선언해야 한다.
단일 데이터 형식의 요소만 포함된 경우,네임스페이스사용을 선언해야 한다 (Ex. Using System.Collections; , 구체적형식의 개체가 아닌 Object형식을 개체요소로 저장)
다른 데이터형식을 추가할 수 없도록 형식안전성을 적용
[Generic]제너릭컬렉션
검색할 경우 형식을 결정하거나 변환할 필요 없다
모든 항목에 동일한 데이터 형식이 있는 경우 유용하다.
원하는 데이터 형식만 추가할 수 있도록 한다.
List<T>
필요에 따라 크기가 동적으로 증가하는 개체배열 (Boxing, Unboxing)
검색,정렬,수정 메서드 제공
[일반화?]
: 클래스 또는 메서드를 선언하고 인스턴스화 할 때 까지 하나 이상의 형식사양을 따르는 클래스 및 메서드를 디자인할 수 있도록 만드는 형식
<T>
형식을 컴파일러에서 자동으로 유추한다(제약조건,반환 값 만으로는 형식매개변수유추 불가)
Boxing, Unboxing 참조 : https://yangjae.tistory.com/manage/newpost/14?type=post&returnURL=https://yangjae.tistory.com/14
Boxing, Unboxing 참조 doc : https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing
IndexOf(object)
: 인스턴스 멤버 메서드 (검색할때 해당문자열이 없을 시 인덱스 -1표시)
1 2 3 4 5 6 7 8 9 10 11 12 | static void Main(string[] args) { ArrayList arrFruits = new ArrayList(); var idx = arrFruits.Add("사과"); arrFruits.Add("오렌지"); arrFruits.Add("포도"); idx = arrFruits.IndexOf("포도"); Console.WriteLine(idx); // 출력값 :2 idx = arrFruits.IndexOf("포또"); Console.WriteLine(idx); // -1 으로 표시 } | cs |
[Hashtable]
[Queue]
[Stack]
'C# > 과제' 카테고리의 다른 글
속성 (0) | 2019.04.03 |
---|---|
[Collection]ArrayList (0) | 2019.04.01 |
Boxing 및 Unboxing (0) | 2019.03.29 |
(3.25) 몬스터 공격하기 ver.수정 (0) | 2019.03.26 |
Stack 과 Heap (0) | 2019.03.25 |
Boxing 및 Unboxing
Boxing
: 값 형식(Stack) -> Object형식(Heap)으로 변환하는 프로세스
: Heap에 저장한다
: 암시적이다
int i =123;
object o =i;
Unboxing
: Object -> 값 형식으로 변환
: 개체에서 값 형식이 추출됩니다.
: 명시적이다
o = 123;
i = (int)o; //o의 주소값
'C# > 과제' 카테고리의 다른 글
[Collection]ArrayList (0) | 2019.04.01 |
---|---|
//미완// Collection[컬렉션] (0) | 2019.03.31 |
(3.25) 몬스터 공격하기 ver.수정 (0) | 2019.03.26 |
Stack 과 Heap (0) | 2019.03.25 |
몬스터 처치하기 (0) | 2019.03.25 |