ページ

2010-03-10

C#勉強中 C# 2.0 入門 5

C# 2.0 入門続き
  • 第5回 匿名メソッドとデリゲート
    delegateそのものは判りやすいし、いかにも使い勝手が良さそうに思えます。難しくなるのはdelegateが定義された場所での上位スコープの変数への参照が許される点です(というか、これってクロージャ?)。このあたりの用語は結構言語毎に微妙に違うので判りにくいものがあります。要はdelegateにはコードそのものと、そのコードが参照するスコープ内の変数のセットが含まれるわけですが、変数の「何が」含まれるのかが問題になるわけですね。ここのサンプルコードによると、変数値ではなく、(動的に生成された)変数そのものが含まれる(束縛される)ようです。結果、for ループ内で制御変数(そのもの)を参照するdelegateを定義すると、すべてが同じ変数を含んでしまうため、最終的な制御変数値への参照になってしまうということでしょう。
今日はヘビーなところでしたので、これだけでした。

0 件のコメント:

コメントを投稿