我看到代表有两种形式:
A. Func<string, string> convertMethod = lambda
B. public delegate string convertMethod(string value);
Run Code Online (Sandbox Code Playgroud)
我不确定这两者之间究竟有什么区别.他们都是代表吗?我相信第一个会使用lambda,第二个必须有一个方法来实际执行工作.我也可能感到困惑.
C#2.0的匿名方法和C#3.0的lambda表达式有什么区别?
在()似乎很傻.有没有更好的办法?
例如:
ExternalId.IfNotNullDo(() => ExternalId = ExternalId.Trim());
我想知道有什么区别.目前我正在学习这些东西,在我看来,这些都是一样的:
delegate void X();
X instanceOfX;
instanceOfX = delegate() { code };
instanceOfX = () => { code };
Run Code Online (Sandbox Code Playgroud)
另外如果lambda更新,我应该只使用lambda并忘记匿名方法吗?
我一直试图解决这个问题很长一段时间(阅读在线博客和关键词),但到目前为止还没有成功.
代表们是什么?什么是Lambda表达式?两者的优点和缺点?何时使用其中一种可能的最佳做法?
提前致谢.
在深化自己使用C#的更高级功能的同时,我遇到了一些代码,我并不知道它的区别.这是关于这两行:
Func<string, int> giveLength = (text => text.Length);
Run Code Online (Sandbox Code Playgroud)
和
Func<string, int> giveLength = delegate(string text) { return text.Length; };
Run Code Online (Sandbox Code Playgroud)
这可以以相同的方式使用:
Console.WriteLine(giveLength("A random string."));
Run Code Online (Sandbox Code Playgroud)
所以基本上......这两条线有什么区别?这些行是否编译为相同的CIL?
重复: 委托关键字与lambda表示法
我理解匿名方法可用于定义委托和编写内联函数.使用Lambda表达式与此有何不同?
我想我什么时候使用什么有点困惑.
编辑:另外,似乎要使用匿名或lambdas,需要一个类型的扩展方法?
我是这个LINQ领域的新手,有一件事我想做.
我有一个动作委托(如下所示),我想在lambda表达式中转换.
Action<string> custom = delegate(string name)
{
lstCutomers.Add(new Customer(name, coutries[cnt]));
name = name + " Object Created";
};
Run Code Online (Sandbox Code Playgroud)
同样的lambda表达式是什么.我只是想知道我可以在lambda中写多个语句,如果没有那么为什么?
提前致谢.
例如,您可以在Visual Studio 2010中使用lambda表达式,但仍然以.NET 2.0为目标.
编译器如何解析lambda表达式以使用不包含此功能的旧框架?