VBではVisualStudio2012(VB11)でやっとyieldが使えるようになりました。
「いつか使ってみたいなぁ」と思っていたけれど、まったく使う機会がありませんでした。
もうね「このまま一生使うこともないのかなぁ」と思ってました。
しかし、この度やっとyieldを使ってみることができました!しかもVBで!
うれしかったですね。
「yield便利~♪」より「yieldやっと使えたよ~っ泣」って。
yield便利だけど使う機会がほぼないんですよね。
特に私のような末端の底辺PGにはw
しかもジェネリックの登場で自作コレクションを作る機会自体が減ってますからね。
今回はASP.NETで自作コレクションクラスを作る必要がありyieldを使ってみました。
(少しハマった部分もありました。別記事で書きます。)
yieldの使い方はネットにごろごろあるので自分用のメモ程度に記載しておきます。
VisualStuidio2013/Fw4.0/VB
Public Class MyCollection Implements IEnumerable(Of String) Private _items As New List(Of String) Public Iterator Function GetEnumerator() As IEnumerator(Of String) _ Implements IEnumerable(Of String).GetEnumerator For Each s As String In Me._items Yield s Next End Function Public Function GetEnumerator1() As IEnumerator _ Implements IEnumerable.GetEnumerator Return GetEnumerator() End Function End Class
自作コレクションクラスをForEachでクルクルまわせたり、Linqで使えるようにするためにIEnumerable(Of T)を実装させます。
IEnumerable(Of T)を実装すると、GetEnumerator()メソッドとGetEnumerator1()メソッドを実装する必要があります。
GetEnumerator1()メソッドは、もう一方のGetEnumerator()を返すように実装します。
GetEnumerator()メソッドは、Yeildを使用できるようにIteratorキーワードを付けます。
Public Iterator Function GetEnumerator() As IEnumerator(Of …
あとはコレクションの要素をクルクル回して1コづつYeildで返してあげればOKです。
0 件のコメント:
コメントを投稿