- 56 名前:デフォルトの名無しさん mailto:sage [2006/05/20(土) 15:32:18 ]
- >>55
>そう。あとdynamic bindingでも、lexical bindingでも同じ意味。 確かにそうだね。というわけで、dynamic bindingじゃできない例を作ってみた。 クロージャの話でよく出てくる古典的な例なので、またかよって思うかもしれんが、 そこは見逃してくれるとありがたい。Converterってのは、.NET Framework 2.0 で入ったdelegate型で、ある型を受け取って別の型(同じ型でもいいけど)を返す メソッドを表す型ね。 using System; class TestLexicalClosure { /* カウンタを作って返すメソッド */ static Converter<int, int> Counter(int start){ return delegate(int n){ return start += n; }; } static void Main(string[] args){ Converter<int, int> counter = Counter(0); //カウンタを作る Console.WriteLine(counter1(1)); // => 1が表示される Console.WriteLine(counter1(2)); // => 3が表示される } } > 引数に与えられた式を使ってクラスを定義するみたいだから、 > 変数や関数の参照は、名前呼び出し風って事になるのかな。ちょっと使いにくそう。 これは意味がよくわからなかった。もうちょっと詳しく言ってくれるとありがたい。
|

|