我已经快速阅读了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)
不过,我不明白为什么会有这样的创新.它只是一种在"方法变量"结束时死亡的方法,对吗?为什么我应该使用它而不是真正的方法?
有人可以提供一个很好的描述Lambda是什么?我们有一个标签,他们是C#问题的秘密,但我还没有找到一个很好的定义和解释他们是什么.
C#2.0的匿名方法和C#3.0的lambda表达式有什么区别?
我正在观看Silverlight教程视频,我在示例代码中遇到了一个不熟悉的表达式.
什么是=>?它叫什么名字?你能给我一个链接吗?我无法搜索它,因为它们是特殊字符.
码:
var ctx = new EventManagerDomainContext();
ctx.Events.Add(newEvent);
ctx.SubmitChanges((op) =>
{
if (!op.HasError)
{
NavigateToEditEvent(newEvent.EventID);
}
}, null);
Run Code Online (Sandbox Code Playgroud) 最近一篇文章的答案(模仿时间的任何机会()C#中的Ruby方法?)在用法示例中使用=>运算符.这个运营商做什么?我无法在我的C#书中找到它,并且很难在网上搜索这样的符号.(我找不到.)
本声明中的"=>"表示什么?
del = new SomeDelegate(() => SomeAction());
Run Code Online (Sandbox Code Playgroud)
以上声明是否与此相同?
del = new SomeDelegate(this.SomeAction);
Run Code Online (Sandbox Code Playgroud)
谢谢.
我是C#的新手和一般的编码,对我正在做的一项练习有疑问.我正在关注w3resource的练习,我遇到了一个挑战,我必须解决这个问题:"编写一个C#程序来检查给定的字符串是否包含1到3次'w'字符."
我的解决方案是:
var theString = Console.ReadLine();
var theArray = theString.ToCharArray();
int betweenOneAndThree = 0;
for (int i = 0; i < theArray.Length - 1; i++)
{
if (theArray[i] == 'w')
betweenOneAndThree++;
}
Console.WriteLine(betweenOneAndThree >= 1 && betweenOneAndThree <= 3);
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但我检查了他们的解决方案,它是这样的:
Console.Write("Input a string (contains at least one 'w' char) : ");
string str = Console.ReadLine();
var count = str.Count(s => s == 'w');
Console.WriteLine("Test the string contains 'w' character between 1 and 3 times: ");
Console.WriteLine(count >= 1 && …Run Code Online (Sandbox Code Playgroud) 我一直在学习lambda表达式,当我终于可以阅读/理解=>运算符时,我很高兴,这对我来说意味着"在哪里"
List<int> a = new List<int>(){0,1,2,1,3,4,5,6,7,8,9};
IEnumerable<int> b = a.FindAll(x => x>=5);
foreach (int x in b)
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)
阅读上面这一行,个人有意义地把它读作"从这个列表中查找所有x的WHERE x大于或等于5",非常好.但后来我遇到了使用Select方法对lambda表达式的不同用法.
List<int> a = new List<int>(){0,1,2,1,3,4,5,6,7,8,9};
IEnumerable<int> b1 = a.Select(x => x*2);
foreach (int x in b)
Console.WriteLine(x);
Run Code Online (Sandbox Code Playgroud)
有了这个,之前读取这个操作符的方法没有意义,因为对我来说这个代码做了"For each x return x*2",这与前一个案例中的同一个操作符的功能非常不同. .我知道.FindAll和.Select之间的区别在于处理输入和输出参数的不同方式,但我在谈论在lambda表达式中使用operator =>.
c# ×7
lambda ×4
.net ×1
c#-3.0 ×1
delegates ×1
expression ×1
methods ×1
operators ×1
terminology ×1