2014年4月7日

C#.NET でインデクサの名前変更

C#.NET のインデクサのデフォルトの名前は Item である。
機会は少ないが、下記のように Item を別のメンバの名前にする場合、そのままではコンパイルが通らない。

public class IndexerName
{
    // コンパイルエラーになる
    public string this[int index] { get { return index.ToString(); } }

    public string Item;
}

そこで、IndexerNameAttribute で、インデクサの名前を変更することができる。

using System.Runtime.CompilerServices;

public class IndexerName
{
    // インデクサの名前が"Indexer"になり、コンパイルエラーにならない。
    // ※変数名の禁則文字は使えない。(エラーになる)
    // ※VB からなら instance(0) の他に、instance.Indexer(0) でもアクセス可能
    [IndexerName("Indexer")]
    public string this[int index] { get { return index.ToString(); } }

    public string Item;
}

参考URL

0 件のコメント:

コメントを投稿