1

我看到这样的 C# 代码允许我在类属性上使用 foreach 循环。

public class EstimateDetailsModel : IEnumerable<string>
{
    public string Dma { get; set; }

    public string Callsign { get; set; }

    public string Description { get; set; }

    public IEnumerator<string> GetEnumerator()
    {
        yield return Dma;
        yield return Callsign;
        yield return Description;
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return this.GetEnumerator();
    }
}

请帮忙。如何使用 vb.net 制作这样的东西?

4

1 回答 1

1

您在此处提供的是 C# 迭代器方法(包含 的方法yield return)。不幸的是,目前 VB.Net 没有类似的功能。模拟这种情况的最简单方法是建立 aList(Of String)并返回 thate

Public Function GetEnumerator() As IEnumerable(Of String) _ 
    Implements IEnumerable(Of String).GetEnumerator
  Dim list As New List(Of String)()
  list.Add(Dma)
  list.Add(Callsign)
  list.Add(Description)
  return list
End Function 

Public Function GetEnumerator2() As IEnumerable _ 
    Implements IEnumerable.GetEnumerator
  Return GetEnumerator()
End Function

这并不完全等同于 C# 版本。主要是因为它会被及时执行而不是延迟执行。但最终效果将大致相同

编辑

啊,我忘记了 Vb.Net 在最新版本(Visual Studio 2012)中添加了迭代器支持。如果您使用的是该版本的 Visual Studio,您可以执行以下操作

Public Iterator Function GetEnumerator() As IEnumerable(Of String) _ 
    Implements IEnumerable(Of String).GetEnumerator
   Yield Dma
   Yield Callsign
   Yield Description 
End Function 
于 2013-08-22T06:45:48.370 回答