我工作過Josh Smith's CommandSink Example和base.Executed += (s, e) =>...
結構都扔我,有人可以幫助使這個晶瑩剔透?有人可以解釋這個C#結構:base.Executed + =(S,E)=>
我的理解:
- base.CanExecute是在繼承的類中的CommandBinding事件
- 的+ =是增加委託該事件
- 委託是匿名函數那條線
我不明白:
- 是(s,e)是該函數的簽名?
- 其中是使用的變量?
這是在上下文中的代碼:
public class CommandSinkBinding : CommandBinding
{
#region CommandSink [instance property]
ICommandSink _commandSink;
public ICommandSink CommandSink
{
get { return _commandSink; }
set
{
if (value == null)
throw new ArgumentNullException("Cannot set CommandSink to null.");
if (_commandSink != null)
throw new InvalidOperationException("Cannot set CommandSink more than once.");
_commandSink = value;
base.CanExecute += (s, e) =>
{
bool handled;
e.CanExecute = _commandSink.CanExecuteCommand(e.Command, e.Parameter, out handled);
e.Handled = handled;
};
base.Executed += (s, e) =>
{
bool handled;
_commandSink.ExecuteCommand(e.Command, e.Parameter, out handled);
e.Handled = handled;
};
}
}
...
所以你也可以寫(發送者,e)甚至是(whatevernnn,e),它只是一個佔位符,對嗎? – 2009-04-21 07:15:54
正確。 (s,e)或(jimbob,blahvar)簽名就是您對參數的命名約定,以便您可以在匿名方法聲明的其餘部分引用它們。但是你應該堅持一些像(s,e)/(sender,e)/(sender,args)這樣合理明顯的東西 – 2009-04-21 07:20:26