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

相关条目[ ]

参考来源[ ]