摘要: where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。1.接口约束。例如,可以声明一个泛型类MyGenericClass,这样,类型参数T就可以实现 IComparable 接口:publicclassMyGenericClasswhere T:IComparable { }2.基类约束:指出某个类型必须将指定的类作为基类(或者就是该类本身),才能用作该泛型类型的类型参数。这样的约束一经使用,就必须出现在该类型参数的所有其他约束之前。classMyClassywhere T :classwhere U :struct{}3.where 子句还可以包括构造函数约束。可 阅读全文
posted @ 2013-12-20 15:48 atmal 阅读(643) 评论(0) 推荐(0) 编辑
摘要: “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda 表达式 x => x * x 读作“x goes to x times x”。=> 运算符具有与赋值运算符 (=) 相同的优先级,并且是右结合运算符。Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如 Where)的参数。在 is 或 as 运算符的左侧不允许使用 Lambd 阅读全文
posted @ 2013-12-20 11:53 atmal 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 任何需要新建委托(new MyDelegate(……))的地方,一般都能用匿名方法(delegate(参数){……}),也一般能用lambda表达式((参数)=>{函数体})。以下代码显式声明了一个名为 ShowValue 的委托,并将对 Name.DisplayToWindow 实例方法的引用分配给其委托实例。using System;using System.Windows.Forms;public delegate void ShowValue();public class Name{ private string instanceName; public Name(string 阅读全文
posted @ 2013-12-20 11:33 atmal 阅读(249) 评论(0) 推荐(0) 编辑