티스토리 뷰
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
'프로그래밍' 카테고리의 다른 글
디렉토리 내용을 구조화해서 출력하기 (0) | 2019.03.11 |
---|---|
Mutex의 개념과 C++/C# 응용 프로그램의 중복 실행 방지하기 (0) | 2019.03.11 |
C# 배열 초기화 방법 (0) | 2018.12.12 |
C#으로 데이터베이스 연결 스트링에서 비밀번호 숨기기, C#에서 정규식 사용하기 (0) | 2018.12.05 |
C#에서 배열 비교하기, MD5 해시 만들기 및 비교하기 (0) | 2018.12.05 |
댓글