你能把一个对象添加到c#观察者吗?

时间:2011-01-13 17:15:41

标签: c# events c#-4.0 filesystemwatcher

当我创建一个观察者时,我想在观察者watcher_Created事件中添加一个我可以阅读的对象吗?

1 个答案:

答案 0 :(得分: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;

但我们让编译器为我们工作。有微妙的差异。