Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda解释和它是什么,以及一个很好的例子_C#_.net_Lambda - Fatal编程技术网

C# Lambda解释和它是什么,以及一个很好的例子

C# Lambda解释和它是什么,以及一个很好的例子,c#,.net,lambda,C#,.net,Lambda,谁能给我一个很好的解释如何使用Lambda,并给出一个很好的例子。我见过它,但我不知道它是什么或是做什么的。Lambda只是一个委托,它是一个匿名函数,您可以为以后的执行创建它 Lambda表达式是表达式树形式的未编译委托,您可以在编译和执行之前对其进行操作 lambda表达式用于创建匿名函数。此处为委托变量指定了匿名函数: Func<int, int> increase = (a => a + 1); 通常,lambda表达式用于向方法发送委托,例如,向ForEach方法发

谁能给我一个很好的解释如何使用Lambda,并给出一个很好的例子。我见过它,但我不知道它是什么或是做什么的。

Lambda只是一个委托,它是一个匿名函数,您可以为以后的执行创建它

Lambda表达式是表达式树形式的未编译委托,您可以在编译和执行之前对其进行操作


lambda表达式用于创建匿名函数。此处为委托变量指定了匿名函数:

Func<int, int> increase = (a => a + 1);
通常,lambda表达式用于向方法发送委托,例如,向
ForEach
方法发送委托,以便为列表中的每个元素调用该委托:

List<int> list = new List<int>();
list.Add(1);
list.Add(2);

list.ForEach(n => Console.WriteLine(n));
List List=新列表();
增加第(1)款;
增加(2);
list.ForEach(n=>Console.WriteLine(n));

我做了一篇文章,我希望它能有一些用途:

也许我有点过于简单化了,但是,如果我是你,首先我认为LAMBDAS是一种很好的方法,可以通过删除嵌套的Frach循环或顶N元素来缩短代码。 因此,如果你在酒店附近跑来跑去,想找一些便宜的房间,你可以(假设在IEnumerable的酒店):

cheapHotels=hotels.Where(h=>h.PriceFrom<50)
一旦这个开始点击,你就可以进入更复杂的领域,这是一个随机的方法,我可以在我当前的项目中使用lambdas(可能是从其他地方偷来的!):

private T反序列化对象(XmlDocument xDoc,string typeName)
{
Type Type=AppDomain.CurrentDomain.GetAssemblys().SelectMany(a=>a.GetTypes()).Single(t=>t.FullName==typeName);
对象o;
var serializer=newxmlserializer(typeof(T));
使用(TextReader tr=new StringReader(xDoc.InnerXml))
{
o=序列化程序。反序列化(tr);
tr.Close();
}
返回(T)o;
}

Lamda表达式不是委托。它很容易转换为委托,但也可以转换为表达式树,而表达式树不适用于委托。谢谢你的回答。我可以看到它的巨大威力,以及它可以节省多少时间。从lambda内部访问外部函数范围中的变量也是可能的。因此,在上面的示例中,您可以访问lambda表达式中的list对象。我强烈建议不要访问该站点,因为它看起来像是垃圾邮件。
List<int> list = new List<int>();
list.Add(1);
list.Add(2);

list.ForEach(n => Console.WriteLine(n));
cheapHotels = hotels.Where(h => h.PriceFrom < 50)
private T DeserializeObject<T>(XmlDocument xDoc, string typeName)
{
    Type type = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Single(t => t.FullName == typeName);

    object o;
    var serializer = new XmlSerializer(typeof(T));
    using (TextReader tr = new StringReader(xDoc.InnerXml))
    {
        o = serializer.Deserialize(tr);
        tr.Close();
    }
    return (T)o;

}