2013-08-22 23 views
1

我看到這樣的C#代碼,它允許我通過類屬性的foreach循環。我該如何與VB.NET中的每個類屬性一起使用?

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做這樣的事情?

回答

1

您在這裏提供的是一個C#迭代器方法(包含yield return的方法)。不幸的是,目前VB.Net沒有類似的功能。模擬這種最簡單的方式是不是建立一個List(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 
相關問題