2011-06-13 94 views
4

我将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; 
     } 
    }  
} 

我是正确的呢?

回答

5

你是对的。

唯一的区别是VB.Net版本也创建了一个命名索引属性; C#不支持命名索引属性。

1

尽管C#不支持默认属性语法,但您的索引器将很好地满足需要。

+0

索引器_are_默认属性。 – SLaks 2011-06-13 23:16:25

+0

我的VB有点生疏,但我不认为你被迫有一个索引的默认属性。例如Text属性是TextBox的默认值,并且它不是索引的属性。 – 2011-06-13 23:30:55

+0

IIRC,这只是VB6 – SLaks 2011-06-14 01:06:47