1

クラス プロパティに対して foreach サイクルを実行できる C# コードが表示されます。

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 に類似した機能はありません。これをシミュレートする最も簡単な方法は、代わりに a を構築して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 
于 2013-08-22T06:45:48.370 に答える