program tip

C #에서 "this [0]"은 무엇을 의미합니까?

radiobox 2020. 12. 8. 07:56
반응형

C #에서 "this [0]"은 무엇을 의미합니까?


라이브러리 코드를 살펴보고 다음과 같은 방법을 보았습니다.

public CollapsingRecordNodeItemList List
{
    get { return this[0] as CollapsingRecordNodeItemList; }
}

이 메서드를 포함하는 클래스는 목록이나 반복 가능한 것이 아닙니다. 정확히 무엇을 this[0]의미합니까?


수업에서 인덱서찾으십시오 .

C #에서는 이러한 종류의 액세스를 허용하도록 인덱서를 정의 할 수 있습니다.

다음은 "SampleCollection"에 대한 공식 가이드의 예입니다.

public T this[int i]
    {
        get
        {
            // This indexer is very simple, and just returns or sets 
            // the corresponding element from the internal array. 
            return arr[i];
        }
        set
        {
            arr[i] = value;
        }
    }

다음은 공식 언어 사양 의 정의입니다 .

인덱서 어레이와 동일한 방식으로 인덱싱 할 개체를 가능하게하는 부재이다. 인덱서는 구성원의 이름 뒤에 구분 기호 [와] 사이에 기록 된 매개 변수 목록이 오는 것을 제외하고는 속성처럼 선언됩니다. 매개 변수는 인덱서의 접근 자에서 사용할 수 있습니다. 속성과 마찬가지로 인덱서는 읽기-쓰기, 읽기 전용 및 쓰기 전용 일 수 있으며 인덱서의 접근자는 가상 일 수 있습니다.

사양의 섹션 10.9 인덱서 에서 완전하고 완전한 정의를 찾을 수 있습니다 .


이것은 선언 유형 (또는 그 기본 클래스)에 "인덱서"가 있다는 것을 의미합니다. 이것은 아마도 int(또는 유사)를 취하고 반환합니다 ... 무언가 (아마도 object?). 이 코드는 인덱서의 get접근 자를 호출하여 0인덱스로 전달한 다음 반환 된 값을로 처리합니다 CollapsingRecordNodeItemList(또는 null반환 된 값이 그와 호환되지 않음).

예를 들면 :

public object this[int index] {
    get { return someOtherList[index]; }
}

하지만 가장 쉬운 일은 그 단계로 들어가는 것입니다. 그것은 그것이 어디로 가고 있는지 정확하게 알려줄 것입니다.


IList/ 이면 클래스 자체가 어떤 형식에서 상속한다고 가정하면 IList<T>컬렉션의 첫 번째 요소를 반환하고 캐스팅하는 것입니다.

public class BarCollection : System.Collections.CollectionBase
{
    public Bar FirstItem
    {
        get { return this[0] as Bar; }
    }

    #region Coming From CollectionBase
    public Object this[ int index ]  {
        get { return this.InnerList[index]; }
        set { this.InnerList[index] = value; }
    }
    #endregion
}

이 클래스 에서 item속성의 get메서드 를 호출하는 것을 의미합니다 . 클래스의 인덱서 라고합니다.

Indexers allow instances of a class or struct to be indexed just like arrays. Indexers resemble properties except that their accessors take parameters.

참고URL : https://stackoverflow.com/questions/16650223/what-does-this0-mean-in-c

반응형