R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

イテレータの後始末(その2)

http://blogs.wankuma.com/rti/archive/2008/02/18/123652.aspx
イテレータの後始末

の続きです。
上記の NyaRuRu さんのコメントにあったLINQの IEnumerator 連鎖の場合の動きについて、一応自分で検証してみました。



public void Test() {
  var q =
    from x in Range(0, 3)
    from y in Range(0, 3)
    from z in Range(0, 3)
    select x * 100 + y * 10 + z;
  foreach(var x in q) {
    Console.WriteLine(x);
    return; // ここで無理やり中断!!
  }
}
public IEnumerable<int> Range(int start, int count) {
  try {
    Console.WriteLine("素敵だし爽やかRさん");
    for(var i = start; i < start + count; ++i) yield return i;
  }
  finally {
    Console.WriteLine("わんくま同盟の若きホープ");
  }
}


素敵だし爽やかRさん
素敵だし爽やかRさん
素敵だし爽やかRさん
0
わんくま同盟の若きホープ
わんくま同盟の若きホープ
わんくま同盟の若きホープ


予定どおり、きちんと後始末されています。

ここまで来ると、何やかんやと理由をつけて、単に

自画自賛

したいだけなんじゃないかと言われそうな気がします。

投稿日時 : 2008年2月20日 11:11

Feedback

# re: イテレータの後始末(その2) 2008/02/20 15:08 さかもと

>>自画自賛したいだけなんじゃないかと言われそうな気がします。


私はとても大人なのでそう思っていても口に出したりしません。

# re: イテレータの後始末(その2) 2008/02/20 19:20 myugaru

こんにちは。
>>自画自賛したいだけなんじゃないかと言われそうな気がします。
記事オチが達人の域だと感服いたしました。
あ、それはそうとIEnumableとかIEnumeratorって早口言葉みたいな単語ですよねえ。クチの周りがそれこそNumeNumeになります(汚。

# re: イテレータの後始末(その2) 2008/02/21 15:13 R・田中一郎

さかもと さん

>私はとても大人なのでそう思っていても口に出したりし

厳密にいうと、事実なので自賛にはなりませんね。

-----------------------------------
myugaru さん

>記事オチが達人の域だと感服いたしました。

ありがとうございます。

http://blogs.wankuma.com/rti/archive/2008/02/18/123652.aspx

に書いた以下の部分について、誰もツッコミを入れてくれなかったので、今回少し不安を感じていたのです。

>つまり、Rさんが「素敵だし爽やか」であることはわかりますが「わんくま同盟の若きホープ」であることまではわかりません。大問題です!
>他にも Range メソッド内でアンマネージリソースを使っている場合の解放に関しても、少しだけ問題が生じます。

>あ、それはそうとIEnumableとかIEnumeratorって早口言葉みたいな単語ですよねえ。クチの周りがそれこそNumeNumeになります(汚。

ひょっとして、デブサミライブで上記の単語を僕が咬んだことを知っていますか?

# re: イテレータの後始末(その2) 2008/02/21 23:08 myugaru

こんばんわー。

>ひょっとして、デブサミライブで上記の単語を僕が咬んだことを知っていますか?

知らなかったですw
うーん、記事オチ含めて色々と勉強させてもらえそうな感じなのでお気に入りの上の方に追加してみました。ではまた来ます^^

# re: イテレータの後始末(その2) 2008/02/22 9:40 R・田中一郎

上の方ですか、ありがとうございます。
下の方だと、スクロールしないといけませんからね。

タイトル
名前
Url
コメント