2010-04-27 90 views
2

我想給一個代表一個屬性setter。這是如何完成的?如何將一個屬性setter鏈接到一個委託?

class A { 
    private int count; 
    public int Count { 
    get { return count; } 
    set { count = value; } 
    } 
} 
A a = new A(); 
delegate void ChangeCountDelegate(int x); 
ChangeCountDelegate dlg = ... ? // should call a.Count = x 
+0

只要你知道,如果你使用.NET 3.5或更高版本,你真的不需要定義這個'ChangeCountDelegate'。 '動作'是一回事。 – 2010-04-27 12:15:59

回答

7
ChangeCountDelegate dlg = (int x) => a.Count = x; 

// or 
ChangeCountDelegate dlg = x => a.Count = x; 

// or 
ChangeCountDelegate dlg = new ChangeCountDelegate(delegate(int x) { a.Count = x; }); 

// or 
ChangeCountDelegate dlg = new ChangeCountDelegate(int x => a.Count = x); 

還是我的思維容易嗎? :)

我相信你明白了。

第三屆一個工作在.NET 2.0中,別人至少需要3.5 :)

+0

這是非常詳細的,不完全linq式;-) – 2010-04-27 12:03:16

+0

我喜歡冗長:)優雅的編碼。 – Snake 2010-04-27 12:12:05

+0

我相信你也可以使用第三種方法,即使在2.0中也不需要明確使用'new'。 – 2010-04-27 12:21:18

1

試試這個:

ChangeCountDelegate dlg = v => a.Count = v; 
1

C#不支持財產委託。

如果需要,您可以使用Snake提及的方式使用匿名方法。

相關問題