Gop*_*opi 15 c# linq lambda delegates anonymous-methods
任何人都可以解释什么是LINQ,Lambda,匿名方法,代表意味着什么?
这3个如何彼此不同?
另一个可替换吗?
当我使用谷歌搜索时,我没有得到任何具体的答案
Mar*_*ell 32
LINQ是一个广泛的技术名称,涵盖了.NET 3.5的大部分和C#3.0的变化; "用语言查询"并且更多.
委托与功能指针相当; 一个"方法句柄"作为对象,如果你愿意,即
Func<int,int,int> add = (a,b) => a+b;
Run Code Online (Sandbox Code Playgroud)
是一种编写代理的方式,然后我可以调用它.代表们也支持事件和其他回调方法.
匿名方法是创建委托实例的2.0简写,例如:
someObj.SomeEvent += delegate {
DoSomething();
};
Run Code Online (Sandbox Code Playgroud)
他们还通过"捕获变量"(上面未显示)将完全闭包引入语言.C#3.0引入了lambdas,它可以产生与匿名方法相同的方法:
someObj.SomeEvent += (s,a) => DoSomething();
Run Code Online (Sandbox Code Playgroud)
但也可以编译成表达式树,以便针对(例如)数据库提供完整的LINQ.例如,您无法对SQL Server运行委托!但:
IQueryable<MyData> source = ...
var filtered = source.Where(row => row.Name == "fred");
Run Code Online (Sandbox Code Playgroud)
可以转换为SQL,因为它被编译成表达式树(System.Linq.Expression).
所以:
| 归档时间: |
|
| 查看次数: |
16592 次 |
| 最近记录: |