• 谁能解释LINQ,Lambda,匿名方法,委托(delegate)的含义是什么?
  • 这3个彼此之间有何不同?
  • 一个可以替换为另一个吗?

  • 谷歌搜索时没有得到任何具体答案

    最佳答案

    LINQ是一个广泛的技术名称,涵盖了大部分.NET 3.5和C#3.0的更改; “以语言查询”等等。

    委托(delegate)相当于功能指针;如果您愿意,可以将“方法句柄”作为对象,即

    Func<int,int,int> add = (a,b) => a+b;
    

    是一种写代表的方式,我可以打电话给他。代表们还支持事件和其他回调方法。

    匿名方法是用于创建委托(delegate)实例的2.0快捷方式,例如:
    someObj.SomeEvent += delegate {
        DoSomething();
    };
    

    他们还通过“捕获的变量”(上面未显示)将完全闭包引入语言。 C#3.0引入了lambda,它可以产生与匿名方法相同的结果:
    someObj.SomeEvent += (s,a) => DoSomething();
    

    但是可以将编译成表达式树,以针对(例如)数据库进行完整的LINQ。例如,您不能针对SQL Server运行委托(delegate)!但:
    IQueryable<MyData> source = ...
    var filtered = source.Where(row => row.Name == "fred");
    

    可以将其编译成表达式树(System.Linq.Expression)并将其转换为SQL。

    所以:
  • 可以使用匿名方法创建委托(delegate)
  • lambda可能与匿名方法相同,但不一定是
  • 10-07 19:45
    查看更多