에서 나는 클래스 자체가 배열 것처럼 클래스 내 컬렉션을 액세스 할 수있게 인덱서를 이해합니다.C 번호 - 인덱서의 의미있는 응용 프로그램
우리가 프로젝트를 개발 중이라고 가정 할 때, 그러한 인덱서의 실제적인 사용법 (예를 들어 도움이 될 수있는)은 어디에 적합합니까?
에서 나는 클래스 자체가 배열 것처럼 클래스 내 컬렉션을 액세스 할 수있게 인덱서를 이해합니다.C 번호 - 인덱서의 의미있는 응용 프로그램
우리가 프로젝트를 개발 중이라고 가정 할 때, 그러한 인덱서의 실제적인 사용법 (예를 들어 도움이 될 수있는)은 어디에 적합합니까?
예를 들어 프레임 워크에서 거의 모든 컬렉션 클래스를 살펴보십시오.
object o = table.getvalue(key);
는 인덱서 다소 간단한 구문을 허용 여기서 : 나는 인덱서없이 언어의 해시 테이블에서 항목을 검색 할 수 있다면, 내가 좋아하는 구문을 사용
object o = table[key];
(의도적으로 무시하고 입력/제네릭 문제) 위의 예제에서
프레임 워크 자체의 제네릭 컬렉션에는 몇 가지 예가 있습니다. 사전 꽤 좋은 예입니다
Dictionary<string, User> Users;
Users["Jorge"].ResetPassword();
Users.GetElementByKey("Jorge").ResetPassword();
음보다 훨씬 우아하고 단순한 것, 인덱서를 사용하기위한 명백한 응용 프로그램은 ... (놀라운) 모음입니다.
예를 들면 :
목록 :
list[4]
해시 테이블 :
table["foo"]
table[Color.Black]
인덱서가 인수를 정수로 제한되지 않습니다 것을 기억하십시오.
다른 개발자가 사용할 Microsoft .NET Framework (실제로 "실제 프로젝트")를 개발 중이라고 가정 해보십시오. 배열처럼 작동하지만 동적으로 크기가 조절되는 클래스를 작성해야합니다 (List<T>
클래스). 인덱서없이, 당신이 얻을 수있는 두 가지 방법을 쓰고 요소를 설정할 수 있습니다 :
public T get(int index) { ... }
public void set(int index, T value) { ... }
// (Java advocates: no offense intended)
이 라이브러리의 사용자가 두 번째 요소를 증가하고자하는 가정을. 그녀는 작성해야 : 인덱서와
list.set(1, list.get(1) + 1);
을, 구문 이해하기, 훨씬 더 간단 더 읽기, 그리고 쉽게 :
list[1]++;
(비슷한 인수가 Dictionary<TKey,TValue>
같은 것들을 적용 ...)
컬렉션이 정렬 된 경우 첫 번째 요소와 마지막 요소가 최소 또는 최대 요소를 가져 오는 데 유용 할 수 있습니다.
ASP.닷넷에는 응용 프로그램, 세션 및 요청과 같은 인덱서를 사용하는 여러 객체가 있습니다.
인덱서 자체가 배열했다 클래스처럼 클래스 내에서 모음에 액세스 할 우리가 수 있습니다. 그 사실이지만
, 당신은 하지는 자체 내에서 항목의 영구 컬렉션을 가지고있는 클래스를 작성하지만, 여전히 색인 할 때 동적으로 계산 된 값을 제공 할 할 수 있습니다. 데이터는 인터넷이나 다른 데이터 소스 (예 : SearchResults
클래스)에서 Console.out.WriteLine(SearchResults["Stackoverflow"].count)
과 같은 문자열에 대한 Google 검색 결과를 얻는 데 사용할 수있는 실시간 데이터로 수집 될 수 있습니다. 그것은 데이터 을 수집 할 때에만을 요청하고 검색된 항목의 모음을 반환합니다.