WEB开发网
开发学院软件开发C语言 C#3.0语言新特性之Lambda表达式 阅读

C#3.0语言新特性之Lambda表达式

 2009-03-12 08:19:19 来源:WEB开发网   
核心提示: l 如果L具有隐式类型的参数列表,当推断出来的类型被P中的方法类型参数取代了并且作为结果的参数类型赋给了L时,C#3.0语言新特性之Lambda表达式(6),L的表达式体必须是一个有效的表达式或语句块,l 可以为L推断一个返回值类型,l 除此之外,无法从L推断出一个返回值类型,对于每一个这

l         如果L具有隐式类型的参数列表,当推断出来的类型被P中的方法类型参数取代了并且作为结果的参数类型赋给了L时,L的表达式体必须是一个有效的表达式或语句块。

l         可以为L推断一个返回值类型。

对于每一个这样的参数,都是通过关联P的返回值类型和从L推断出的返回值类型来从其上进行推断的,并且新的推断将被添加到累积的推断集合中。这个过程一直重复,直到无法进行更多的推断为止。

在类型推断和重载抉择中,Lambda表达式L的“推断出来的返回值类型”通过以下步骤进行检测:

l         如果L的表达式体是一个表达式,则该表达式的类型就是L的推断出来的返回值类型。

l         如果L的表达式体是一个语句块,若由该块中的return语句中的表达式的类型形成的集合中恰好包含一个类型,使得该集合中的每个类型都能隐式地转换为该类型,并且该类型不是一个空类型,则该类型即是L的推断出来的返回值类型。

l         除此之外,无法从L推断出一个返回值类型。

作为包含了Lambda表达式的类型推断的例子,请考虑System.Query.Sequence类中声明的Select扩展方法:

namespace System.Query

    {

        public static class Sequence

        {

            public static IEnumerable<S> Select<T, S>(

                this IEnumerable<T> source,

                Func<T, S> selector)

            {

                foreach (T element in source) yield return selector(element);

            }

        }

    }

上一页  1 2 3 4 5 6 7 8  下一页

Tags:语言 特性 Lambda

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接