我是C#的新手,並試圖瞭解lambda表達式以及代表。這是我運行的代碼:lambda表達式中的對象範圍
delegate bool D1();
delegate bool D2(int i);
namespace Console
{
class Program
{
D1 d1;
D2 d2;
public void testMethod(int input)
{
int j = 0;
d1 =() => { j = 10; return j < input; };
d2 = (x) => { return x == j; };
System.Console.WriteLine("j = {0}", j);
bool res = d1();
System.Console.WriteLine("res={0}, j ={1}", res, j);
}
static void Main(string[] args)
{
Program p = new Program();
p.testMethod(10);
System.Console.WriteLine(p.d2(10));
System.Console.ReadKey();
}
}
}
什麼我不明白的是d2
打印true
調用。當構造d2
時,j
的值爲0
。只有在testMethod
後面調用d1
後才發生更改。那麼如何印刷True
?我在這裏錯過了什麼?
謝謝..有什麼辦法可以控制這個,以便`d1`&`d2`將單獨的`j`實例? – Naveen 2011-12-16 12:34:55