Visual Basic默认属性vs C#属性
问题描述:
我将Visual Basic.Net代码转换为C#在我的项目中。但是我对如何将Visual Basic默认属性转换为C#存在一些疑问。我认为的第一个选择是索引者。让我们来想象下一个代码在Visual Basic中Visual Basic默认属性vs C#属性
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;
}
}
}
我是正确的呢?
答
你是对的。
唯一的区别是VB.Net版本也创建了一个命名索引属性; C#不支持命名索引属性。
答
尽管C#不支持默认属性语法,但您的索引器将很好地满足需要。
索引器_are_默认属性。 – SLaks 2011-06-13 23:16:25
我的VB有点生疏,但我不认为你被迫有一个索引的默认属性。例如Text属性是TextBox的默认值,并且它不是索引的属性。 – 2011-06-13 23:30:55
IIRC,这只是VB6 – SLaks 2011-06-14 01:06:47