4

我在我的项目中将 Visual Basic.Net 代码转换为 C#。但是我对如何将 Visual Basic 默认属性转换为 C# 有一些疑问。我的第一个选择是索引器。让我们想象一下 Visual Basic 中的下一个代码

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 回答