今天公司弄了個VS2008 beta 2中文版,雖然很大一部分是為了JS的智能提示外,也應該好好的溫習一下.NET的一些新特性,由於以前寫過一些文章,但是都沒有系統的學過,都只是嘗一下新鮮感。不知道從那開始,所以今天就來看看自動話屬性,以及對象初始化和集合初始化的一些新特性。
1.自動屬性
在做一個程序是我們離不開屬性,特別是實體類。我們用指頭一個一個的敲著get和set及局部的變量(Fields),現在可好不用在重復敲那些東東了我們只要用到get和set,就和我們的接口聲明差不多了,是不是很happy。
OK看個例子先,在.NET 2.0下我們聲明一個實體類要有如下做法,這個應該沒什麼意見吧。
1 public class Person {
2
3 private string firstName;
4 private string lastName;
5 private int age;
6
7 public string FirstName {
8
9 get {
10 return this.firstName;
11 }
12 set {
13 this.firstName = value;
14 }
15 }
16
17 public string LastName {
18
19 get {
20 return this.lastName;
21 }
22 set {
23 this.lastName = value;
24 }
25 }
26
27 public int Age {
28
29 get {
30 return this.age;
31 }
32 set {
33 this.age = value;
34 }
35 }
36 }
在.NET 3.x中我們可以省了很多東東,代碼也變得簡單很多,代碼如下:
1 public class Person {
2
3 public string FirstName {
4 get; set;
5 }
6
7 public string LastName {
8 get; set;
9 }
10
11 public int Age {
12 get; set;
13 }
14 }
2.對象的初始化
我們省了很多的代碼,手指也少動了,沒辦法人總是越來越懶的嗎,下面我們來看看對象的初始化也是簡單了不少,看代碼就知道了,代碼如下:第一個代碼是.NET2.0中的初始化方式,而第二個是.NET 3.x的初始化方式,當然.NET2.0的方式也適合3.x的版本。
1 //.NET 2.0:
2 Person person = new Person();
3 person.FirstName = "小兵";
4 person.LastName = "網魂";
5 person.Age = 23;
6 //.NET 3.x:
7 Person person = new Person { FirstName = "小兵", LastName = "網魂", Age = 23};
3.集合的初始化
其實我們寫程序也是封裝在封裝來為我們節省更多的東東,復用更多的東東。微軟為我們做的也是越來越多,這是這篇文章的最後一個主題就是集合的初始化,我麼一起來對照一下。
1 //.NET 2.0;
2 List<Person> people = new List<Person>();
3
4 people.Add( new Person { FirstName = "小兵", LastName = "網魂", Age = 23 } );
5 people.Add( new Person { FirstName = "QQing", LastName = "Lai", Age = 22 } );
6 people.Add( new Person { FirstName = "Xbing", LastName = "My", Age = 20 } );
7
8 //.NET 3.x;
9 List<Person> people = new List<Person> {
10 new Person { FirstName = "小兵", LastName = "網魂", Age = 23 },
11 new Person { FirstName = "QQing", LastName = "Lai", Age = 22 },
12 new Person { FirstName = "Xbing", LastName = "My", Age = 20 }
13 };//記得這邊是要有";"的,不然就會出錯的。
OK以上就是我們今天所溫習的一個簡單的特性,利用它們我們可以很簡單的來書寫實體類了,雖然在程序中完全支持.NET 3.x在現階段還是不可能的,作為程序員學習在學習才是正道。