如何处理VB.NET中的每个超类属性?

如何处理VB.NET中的每个超类属性?,vb.net,foreach,ienumerable,Vb.net,Foreach,Ienumerable,我看到这样的C代码,它允许我在类属性上使用foreach循环 public class EstimateDetailsModel : IEnumerable<string> { public string Dma { get; set; } public string Callsign { get; set; } public string Description { get; set; } public IEnumerator<strin

我看到这样的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();
    }
}
公共类EstimateDetailsModel:IEnumerable
{
公共字符串Dma{get;set;}
公共字符串调用符号{get;set;}
公共字符串说明{get;set;}
公共IEnumerator GetEnumerator()
{
收益率;
收益回报呼号;
收益率-收益率描述;
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
返回此.GetEnumerator();
}
}

请帮忙。如何使用vb.net制作类似的内容

这里提供的是一个C#迭代器方法(包含
yield return
的方法)。不幸的是,目前VB.Net没有类似的功能。最简单的模拟方法是建立一个
列表(字符串)
并返回该列表

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 

这里提供的是一个C#迭代器方法(包含
yield return
的方法)。不幸的是,目前VB.Net没有类似的功能。最简单的模拟方法是建立一个
列表(字符串)
并返回该列表

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