4

プロジェクトでVisualBasic.NetコードをC#に変換しています。しかし、Visual BasicのデフォルトプロパティをC#に変換する方法については疑問があります。私に来る最初のオプションはインデクサーです。VisualBasicの次のコードを想像してみましょう

Public Class MyClass
Dim MyHash as Hashtable

Public sub New()
    MyHash = New Hashtable()
    MyHash.Add("e1",1)
    MyHash.Add("e2",2)
    MyHash.Add("e3",3)
End Sub

Defaul Propery MyDefProp(ByVal key as string) as Object
  Get
    Return MyHash(key)
  End Get

  Set(ByVal ObjectToStore As Object)
    MyHash(key) = ObjectToStore
  End Set
End Property

これをC#に変換しました:

public class MyClass
{
    private Hashtable MyHash;

    public MyClass()
    {
        MyHash = new Hashtable();
        MyHash.Add("A1",1);
        MyHash.Add("A2",2);
        MyHash.Add("A3",3);
    }

    public object this[string key]
    {
        get
        {
            return MyHash[key]; 
        }

        set
        {
            MyHash[key] = value;
        }
    }     
}

私はこれで正しいですか?

4

2 に答える 2

5

あなたは正しいです。

唯一の違いは、VB.Netバージョンでも名前付きのインデックス付きプロパティが作成されることです。C#は、名前付きインデックス付きプロパティをサポートしていません。

于 2011-06-13T23:15:46.993 に答える
1

C#はデフォルトのプロパティ構文をサポートしていますが、インデクサーはそのニーズをうまく満たします。

于 2011-06-13T23:15:09.330 に答える