深入学习C#系列文章01---C#3 革新写代码的新方式
C#3 几乎所有的新特性都是为LINQ服务的,但他们单独使用也非常有用,接下来我们来简单看看C#3 的几个新特性吧。
一、自动实现的属性-----编写由字段直接支持的简单属性,不再显得臃肿不堪。
之前写属性时是大至是这样:
private string name; public string Name { get { return name; } set { name = value; } }
有了自动属性后是这样子的:
public string Name { get; set; }
在C#3中还是可以使用之前字段和属性的写法,主要是因为有些字段的值在要在get,set中进行控制,但大多数属性还是没有控制的,所以用自动属性更方便。
二、隐式类型的局部变量-----根据初始值推断变量的类型,从而简化局部变量的声明。
1、写法
如果要使用隐式类型,唯一要做的就是将普通局部变量声明中的类型名称替换为var
var args = Environment.GetCommandLineArgs();
三、对象和集合初始化程序-----用一个表达就能轻松的创建和初始化对象。
现在有一个对象
public class Person { public int Age { get; set; } public string Name { get; set; } public Person() { } public Person(string name) { } }
在C#3之前可以采用如下两种方式初始化:
//方法一:直接使用无参构造函数,然后设置这两个属性 Person person = new Person(); person.Age = 10; person.Name = "andy"; //方法二:使用有参的构造函数 Person person2 = new Person("andy"); person2.Age = 20;
C#3之后又多了如下三种方式:
//方法一 Person person1 = new Person() { Age = 1, Name = "andy" }; //方法二 Person person2 = new Person { Age = 2, Name = "andy" }; //方法三 Person person3 = new Person("andy") { Age = 3 };
四、隐式类型的数组-----根据内容推断数组的类型,从而简化数组的创建表达式。
有这样一个方法:
public string getPerson(string[] nameArry) { return nameArry[0]; }
C#3之前的写法:
getPerson(new string[] {"andy","tom"});
C#3又多了一种写法:
getPerson(new[] { "andy", "tom" });
五、匿名类型-----允许你创建新的“临时”类型来包含简单的属性。
匿名类型服务一个更高的目标----linq
var tom = new { age = 10, name = "andy" };