C♯ 3.0 的特性
来自站长百科
导航:上一页|C语言 | C++ | C♯ |JAVA | Perl | Pascal | Visual Basic
C♯ 3.0 发布于2007年11月19日,是.NET Framework 3.5 的一部分, 它的新特性灵感来自于函数式编程语言,如:Haskell 和 ML,并广泛地引入了Language Integrated Query (LINQ) 模式到通用语言运行库中
类型初始化器[ ]
Customer c = new Customer(); c.Name = "James";
可写作:
Customer c = new Customer { Name="James" };
集合初始化器[ ]
MyList list = new MyList(); list.Add(1); list.Add(2);
可写作
MyList list = new MyList { 1, 2 };
假设 MyList 实现了 System.Collections.IEnumerable 且有一个Add 方法method[6]
匿名类型[ ]
var x = new { Name="James" };
局部变量类型推断[ ]
局部变量类型推断:
var x = new Dictionary<string, List<float>>();
等同于
Dictionary<string, List<float>> x = new Dictionary<string, List<float>>
它只是一个语法糖, 这个特性被匿名类型声明时所需要
Lambda表达式[ ]
Lambda表达式指:
listOfFoo.Where( delegate(Foo x) { return x.Size > 10; } )
可写作
listOfFoo.Where(x => x.Size > 10);
编译器翻译Lambda表达式为强类型委托或强类型表达式树.
自动化属性[ ]
编译器将自动生成私有变量和适当的getter(get访问器)和setter(set访问器),如:
public string Name { get; private set; }<pre> [ ==扩展方法== 扩展方法指,一个静态类包含this关键字作为方法的第一参数时,这个方法将被添加到该this的类型中: <pre>public static class IntExtensions { public static void PrintPlusOne(this int x) { Console.WriteLine(x + 1); } } int foo = 0; foo.PrintPlusOne();
分部方法[ ]
- 分部方法 (Partial methods) 必须定义在分部类 (partial classes) 中
- 定义分部方法 需要用 partial 做修饰符
- 分部方法不一定总是有执行内容的,也就是说定义的方法 可以一句操作语句都没有
- 分部方法返回值必须是void
- 分部方法可以是静态 (static) 方法
- 分部方法可以包含参数,参数可以包含以下修饰词:this,ref,params
- 分部方法必须是私有 (private) 方法
例子:
partial class C { static partial void M(int i); // defining declaration } partial class C { static partial void M(int i) { dosomething(); } }