티스토리 뷰

728x90

파이썬이나 C#은 딕셔너리 타입을 지원하는데 딕셔너리 타입은 C# 프로그래밍의 유연성을 높여 주는 상당히 유용한 도구입니다. 


Dictionary<string, short> cntlidx = new Dictionary<string, short>();

if (cntlidx.ContainsKey(idxname) && cntlidx[idxname] >= 0) // control exist
{
	cntlidx[idxname] = (short)Allclient.Count;
	//......
}


위의 예제는 String 타입의 키와 short 타입의 값을 가지는 딕셔너리를 정의하고 사용하는 코드입니다. 딕셔너리를 정의한 다음에는 cntlidx["A001"] = 10; 처럼 딕셔너리에 값을 저장하거나 갱신할 수 있습니다. 만약 딕셔너리에 키가 존재하지 않는 데이터를 rst = cntlidx["A003"]; 참조한다면 예외가 발생하기 때문에 사용전에 반드시 ContainsKey() 메소드를 통해서 딕셔너리에 해당 키가 존재하는지 사전에 검증할 필요가 있습니다. 데이터가 존재하는 경우 rst = cntlidx["A003"]; 처럼 간단하게 데이터를 참조할 수 있으므로 유연한 프로그래밍에 도움을 받을 수 있습니다.


String screen_name = Groupbase.FirstOrDefault(x => x.Value == scrno).Key;

string idxname = Groupbase.FirstOrDefault(x => x.Value == i && x.Key.StartsWith("AA")).Key;


딕셔너리에서 키는 중복될 수 없지만 값의 경우에는 똑같은 값이 여러개 존재할 수도 있으므로 딕셔너리를 키값으로 참조하는 방법처럼 값을 기준으로 키값을 참조할 수는 없고 위의 예제처럼 괄호속에 람다 문법으로 기술한 조건과 일치하는 첫번째 키 또는 기본값을 리턴하는 FirstOrDefault(), LastOrDefault()등의 메소드를 사용하면 딕셔너리를 값으로 간단히 검색해서 원하는 키값을 찾을 수 있습니다. 위의 코드에서 첫번째 예제는 값만을 비교 했지만 두번째 코드는 값 비교와 함께 키에 대한 필터링도 수행했음을 참조할 수 있습니다. 




728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
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
글 보관함