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

时间:2023-03-09 17:19:10
C# in Depth阅读笔记3:C#3特性

1.隐式类型

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

2.简化初始化

(1)设置简单属性

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

(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", },
{"matt",}
}
Person tom = new Person
{
Name = "Tom",
Age = ,
Home = { Town = "Reading", Country = "UK" },
Friends =
{
new Person { Name = "Alberto" },
new Person("Max"),
new Person { Name = "Zak", Age = },
new Person("Ben"),
new Person("Alice")
{
Age = ,
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左端的序列仍采用流式处理,右端采用缓冲处理。