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();
}
}