2011-01-13 45 views

回答

4

你可以只捕捉到它的匿名委託:

object o; 
var watcher = new FileSystemWatcher(); 
watcher.Created += (sender, e) => { 
    Console.WriteLine(o); 
    // handle created event 
}; 

這裏,o表示你想捕捉(它不必鍵入爲object)的對象。

注意,這實際上是一樣的

class Foo { 
    private readonly object o; 
    public Foo(object o) { 
     this.o = o; 
    } 

    public void OnCreated(object sender, FileSystemEventArgs e) { 
     Console.WriteLine(this.o); 
     // handle event 
    } 
} 

object o = null; 
Foo foo = new Foo(o); 
var watcher = new FileSystemWatcher(); 
watcher.Created += foo.OnCreated; 

但我們已經讓編譯器做的工作我們。有微妙的差異。

+1

a closure :)閱讀更多關於它在這裏http://stackoverflow.com/questions/428617/what-are-closures-in-net – 2011-01-13 17:27:31

相關問題