2011-02-24 5 views
26

가와 .NET 4에서 클래스 만들 수 있습니다 : "항목"라는클래스 "항목"

  1. 인덱서,
  2. 속성을?

예를 들어, C# 클래스 나를 위해 컴파일되지 않습니다 :

유형은 'MyClass에'이미 '항목에 대한 정의가 포함되어 컴파일러 오류 CS0102를 제공

public class MyClass 
{ 
    public object Item { get; set; } 
    public object this[string index] { get { return null; } set { } } 
} 

을 '

Item을 명시 적으로 정의하고 있지만.

답변

37

this site을 바탕으로, C#을 내부적으로 인덱서를 지원하지 않는 언어 Item라는 속성을 생성

public class MyClass 
{ 
    public object Item { get; set; } 
    [System.Runtime.CompilerServices.IndexerName("MyItem")] 
    public object this[string index] { get { return null; } set { } } 
} 
4

올바르게 기억하면 이러한 인덱서는 VB.Net에서 "Item()"메서드를 통해 액세스 할 수 있습니다. 그것은 "정의 된 두 번"이 나오는 곳입니다.

23

인덱서에게 이름을 속성을 사용할 수 있습니다. 다음과 같이 IndexerNameAttribute을 사용하여이 이름을 제어 할 수 있습니다.

[IndexerName("MyIndexer")] 
public object this[string index] 
{ 
    get { return blah; } 
} 
관련 문제