인덱싱된 속성 디자인

인덱싱된 속성을 사용하면 문자열의 문자 또는 BitArray의 비트와 같은 항목 그룹에 배열과 유사한 방식으로 액세스할 수 있습니다. 인덱서 또는 기본 속성이라고 하는 인덱싱된 속성은 액세스할 그룹 요소를 나타내는 매개 변수를 사용한다는 점에서 일반 속성과 다릅니다. 인덱서가 주로 루프에서 사용되므로 인덱스 속성의 구현은 가능한 한 단순해야 합니다. 다음 지침은 적절한 경우에 잘 디자인된 인덱스를 형식에 포함하는 데 도움이 됩니다.

내부 배열에 저장된 데이터에 대한 액세스를 제공하기 위해 인덱서를 사용할 수 있습니다.

항목 컬렉션을 나타내는 형식에 대한 인덱서를 제공할 수 있습니다.

하나 이상의 매개 변수가 있는 인덱싱된 속성을 사용하지 않습니다.

인덱서에 여러 매개 변수가 필요한 경우 해당 속성이 실제로 논리적 컬렉션에 대한 액세스를 나타내는지 여부를 다시 확인합니다. 그렇지 않은 경우 메서드를 대신 사용하고 Get 또는 Set으로 시작하는 메서드 이름을 선택할 수 있습니다.

System.Int32, System.Int64, System.String, System.Object, 열거형 또는 제네릭 형식 매개 변수 이외의 매개 변수 형식이 있는 인덱서를 사용하지 않습니다.

디자인에 다른 형식의 매개 변수가 필요한 경우 해당 멤버가 실제로 논리적 컬렉션에 대한 액세스를 나타내는지 여부를 다시 확인해야 합니다. 그렇지 않은 경우 메서드를 대신 사용하고 Get 또는 Set으로 시작하는 메서드 이름을 선택할 수 있습니다.

명백하게 더 좋은 이름(예: System.String.Chars(System.Int32) 속성 참조)이 없는 경우 인덱싱된 속성에 Item 이름을 사용합니다.

IndexerNameAttribute 특성은 인덱서 이름을 사용자 지정하는 데 사용할 수 있습니다.

의미가 같은 인덱서와 메서드를 제공하지 않습니다.

다음 코드 예제에서는 인덱서가 메서드로 변경되어야 합니다.

<System.Runtime.CompilerServices.IndexerNameAttribute("PositionsHeld")> _
    Public Property Item (skillId as Integer) as JobInfoCollection


...


Public Function GetPositions(skillId as Integer, _
    minJobLevel as Integer) _
   as JobInfoCollection
[System.Runtime.CompilerServices.IndexerNameAttribute("PositionsHeld")]
    public JobInfoCollection this [int skillId]


...


public JobInfoCollection GetPositions(int skillId, int minJobLevel)
[System::Runtime::CompilerServices::IndexerNameAttribute("PositionsHeld")]
property JobInfoCollection^ default [int]


...


JobInfoCollection^ GetPositions(int skillId, int minJobLevel)

한 형식에서 하나 이상의 오버로드된 인덱서 패밀리를 제공하지 않습니다.

C# 컴파일러와 같은 일부 컴파일러에서는 이 지침이 적용됩니다.

일부 언어에서는 여러 인덱서 집합을 지원하지 않습니다. 해당 언어를 사용하는 경우 일부 개발자는 이러한 멤버에 액세스할 수 없습니다.

기본이 아닌 인덱싱된 속성을 사용하지 않습니다.

C# 컴파일러와 같은 일부 컴파일러에서는 이 지침이 적용됩니다. 일부 프로그래밍 언어에서는 기본이 아닌 인덱싱된 속성이 지원되지 않습니다. 해당 언어를 사용하는 경우 일부 개발자는 이러한 멤버에 액세스할 수 없습니다.

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

디자인 지침에 자세한 내용은 참조를 "Framework 디자인 지침: 규칙, 숙어, 및 재사용에 대 한 패턴입니다.NET 라이브러리"도 서 Krzysztof Cwalina와 Brad Abrams, 게시 Addison-wesley, 2005.

참고 항목

개념

속성 디자인

기타 리소스

멤버 디자인 지침

클래스 라이브러리 개발을 위한 디자인 지침