C#这个VB.NET Me Indexer转换的索引器

时间:2015-03-03 18:57:15

标签: c# .net vb.net

如何用VB.NET编写?

public class Foos : ICollection<Foo> {

  private List<Foo> list;

  public Foos() {
    list = new List<Foo>();
  }

  public Foo this[int index] {
    get {
      return list[index];
    }
  }

}

以下是我的尝试:

Public Class Foos
  Implements ICollection(Of Foo)

  Private list as Generic.List(Of Foo)

  Public Sub New()
    list = New Generic.List(Of Foo)()
  End Sub

  Public ReadOnly Property Me(index As Integer) As Foo
    Get
      Return list(index)
    End Get
  End Property

End Class

Visual Studio在Me(index As Integer)(指向 Me 关键字)的位置给出了编译错误:

  

关键字无效作为标识符。

VB编码员在这里使用什么?

2 个答案:

答案 0 :(得分:7)

使用Default以及保留名称Me以外的其他内容:

  Default Public ReadOnly Property Item(index As Integer) As Foo
    Get
      Return list(index)
    End Get
  End Property

Default表示该属性是该类的默认属性,这意味着如果您不指定属性名称,它将隐式使用默认属性。所以它看起来像数组索引器但实际上只是一个方法调用。

您也可以将其命名为任何名称 - Item是框架类使用的相当常见的名称,但使用名称Item毫无魔力。

答案 1 :(得分:3)

您可以使用Converter工具将C#转换为VB.NET。

http://codeconverter.sharpdevelop.net/SnippetConverter.aspx

    Public Class Foos
     Implements ICollection(Of Foo)

     Private list As List(Of Foo)

     Public Sub New()
        list = New List(Of Foo)()
     End Sub

     Public Default ReadOnly Property Item(index As Integer) As Foo
        Get
            Return list(index)
        End Get
     End Property
   End Class