谁能解释一下 LINQ、Lambda、匿名方法、代表是什么意思?
这3个彼此有何不同?
一个可以替换另一个吗?
当我谷歌搜索时,我没有得到任何具体的答案
谁能解释一下 LINQ、Lambda、匿名方法、代表是什么意思?
这3个彼此有何不同?
一个可以替换另一个吗?
当我谷歌搜索时,我没有得到任何具体的答案
LINQ 是一个广泛的技术名称,涵盖了 .NET 3.5 和 C# 3.0 的大部分变化;“语言查询”等等。
委托相当于函数指针;如果您愿意,可以将“方法句柄”作为对象,即
Func<int,int,int> add = (a,b) => a+b;
是一种编写委托的方式,然后我可以调用它。代表还支持事件和其他回调方法。
匿名方法是 2.0 创建委托实例的简写,例如:
someObj.SomeEvent += delegate {
DoSomething();
};
他们还通过“捕获的变量”(上面未显示)在语言中引入了完全闭包。C# 3.0 引入了 lambdas,它可以产生与匿名方法相同的内容:
someObj.SomeEvent += (s,a) => DoSomething();
但它也可以编译成表达式树,用于针对(例如)数据库的完整 LINQ。例如,您不能针对 SQL Server 运行委托!但:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
可以翻译成 SQL,因为它被编译成表达式树 ( System.Linq.Expression
)。
所以: