代码改变世界

C# in Depth阅读笔记3:C#3特性

2015-01-16 15:15  cgs  阅读(168)  评论(0编辑  收藏  举报

1.隐式类型

var a=new Dictionary<string ,list<person>>();可以简化代码,增强可读性。

2.简化初始化

 (1)设置简单属性 

 Person tom1= new Person(){Name="Tom", Age=17}; 

 (2)为嵌入对象设置属性

 Person tom2=new Person()
{ Name="Tom", Home={Country="china",Town="Tangshan"}(Home为只读属性,不能直接赋值) };

 

new关键字用来初始化对象,而对Home属性的赋值没有使用new关键字,因为在此处并没有新建一个Home对象,而是在new Person()时新建的(下面Friend集合同理)

  (3)集合初始化列表

Dictionary<string,int> nameMap=new Dictionary<string,int>
{
     {"holly", 34},
     {"matt",20}
}
Person tom = new Person
{
    Name = "Tom",
    Age = 9,
    Home = { Town = "Reading", Country = "UK" },
    Friends =
    {
        new Person { Name = "Alberto" },
        new Person("Max"),
        new Person { Name = "Zak", Age = 7 },
        new Person("Ben"),
        new Person("Alice")
        {
               Age = 9,
               Home = { Town = "Twyford", Country = "UK" }
        }
    }
};

 

3。隐式类型的数组

    MyMethod(new string[]{"holly","Tom"})等价于 MyMethod(new []{"holly","Tom"})

4.匿名类型

在给定的程序集中, 具有相同数量,相同名称及类型的属性,并且属性具有相同顺序的匿名类型是同一种类型。

匿名类型的属性和字段是只读的。

5.扩展方法

空引用可以调用扩展方法(例如可以新建一个IsNullOrEmpty(this string a)的扩展方法)

groupby并不生成新的集合,只是改变迭代的顺序。

6.linq

let子句会转换成select方法生成一个新的匿名类型。

join左端的序列仍采用流式处理,右端采用缓冲处理。