我已经快速阅读了Microsoft Lambda Expression文档.
这种例子帮助我更好地理解了:
delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
Run Code Online (Sandbox Code Playgroud)
不过,我不明白为什么会有这样的创新.它只是一种在"方法变量"结束时死亡的方法,对吗?为什么我应该使用它而不是真正的方法?
一旦编译完成,它们之间是否存在差异:
delegate { x = 0; }
Run Code Online (Sandbox Code Playgroud)
和
() => { x = 0 }
Run Code Online (Sandbox Code Playgroud)
?
今天我在考虑宣布这个:
private delegate double ChangeListAction(string param1, int number);
Run Code Online (Sandbox Code Playgroud)
但为什么不用这个:
private Func<string, int, double> ChangeListAction;
Run Code Online (Sandbox Code Playgroud)
或者如果ChangeListAction没有返回值,我可以使用:
private Action<string,int> ChangeListAction;
Run Code Online (Sandbox Code Playgroud)
那么使用delegate关键字声明委托的优势在哪里?
是因为.NET 1.1,随着.NET 2.0的出现Action<T>和.NET 3.5的出现Func<T>?
C#2.0的匿名方法和C#3.0的lambda表达式有什么区别?
我在理解C#中的委托如何工作方面遇到了一些麻烦.我有很多代码示例,但我仍然无法正确掌握它.
有人能用"普通英语"向我解释一下吗?当然!代码的例子会有所帮助,但我认为我需要更多关于它如何/为何起作用的描述.
编辑:
嗯,问题是:为什么代表们工作?什么是整个过程的"流程图"?
使用代表的先决条件是什么?
我希望这会使问题更清楚.
我想知道使用委托方法和使用常规方法[无代表]之间的区别.
有代表:
delegate void DelMethod(string str);
static void Method(string str)
{
Debug.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)
用法:
DelMethod dm = new DelMethod(Method);
dm(string);
Run Code Online (Sandbox Code Playgroud)
没有代表:
static void Method(string str)
{
Debug.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)
用法:
Method(string)
Run Code Online (Sandbox Code Playgroud)
这两个有什么不同?
没有委托的方法更小更容易.但我发现编码人员经常使用委托方法.
这背后的原因是什么?
我只想验证我对以下内容的理解
嗯...他们都做类似的事情,你如何定义和知道何时使用每个?
对不起,我不好解释