天天看點

C#3.0新特性小結(1)

安裝了VS2008後在園子上看到關于LinQ和SilverLight一些技術的讨論,其中涉及到c#3.0的新特性。晚上回來做了一個小執行個體感覺新特性還不錯,更加人性化。

園子裡也有不少人關于這方面的介紹文章,今天加以小結作為備忘,也為學習LinQ和SilverLight做點基礎。

VS2008開發支援在。NET3.0架構上,總體而言是從。NET2.0架構基礎上添加了一些新特性。當然.NET2.0中核心不會發生變化。C#3.0在此基礎上進行一定改進,友善我們編寫程式,并把主要的精力放在業務邏輯的實作上,減少重複工作,例如新特性中自動屬性把字段的封裝更加內建化了,把更多的重複工作交給了編譯器來做,首先介紹下.NET架構版本的更新:

--.NET版本的更新次序

.NET架構:    .NET1.0     .NET2.0     .NET3.0/3.5

C#語言版本:   C#1.0       C#2.0       C#3.0

VS開發平台:   VS2003      VS2005       VS2008 

現在VS2005仍然是目前主流開發平台,但随着VS2008和.NET3.0/3.5釋出,開發平台漸漸從VS2005向VS2008開始過渡,目前已經在行業中形成一種趨勢,在招聘資訊我經常看到關于這方面要求:熟悉C#3.0新特性和熟練操作VS2008等等。從自身角度而言為了長遠發展有必要掌握新特性.廢話少說。來看看主要有那些新特性:

--C#3.0新特性

--Author:chenyang  Time:2009年3月1日23:13:46

*自動屬性(Auto-Implemented Properties)

*隐含類型局部變量(Local Variable Type Inference) 

*匿名類型(Anonymous Types) 

*對象與集合初始化器(Object and Collection Initializers) 

*擴充方法(Extension Methods) 

*Lambda表達式和Lambda表達式樹 (Lambda Expression and Lambda Expression Trees)  

總共出現6中新特性。在如下系列文章中我會逐個介紹他們特點和使用方法:首先介紹自動屬性

自動屬性

在.NET2.0我們在編輯一個實體類時常需要定義屬性:屬性是對私有字段一種封裝,C#不提倡将域的保護級别設為public而使使用者在類外任意操作--那樣太不OO,或者具體點說太不安全,對所有有必要在類外可見的域,C#2.0推薦采用屬性來表達封裝.

--C#2.0中屬性  

public class Company  

{  

    private string companyName;  

    public string CompanyName  

    {  

      get { return CompanyName; }  

      set { CompanyName= value; }  

    }  

在C#2.0中我們在定義實體時盡量将公開的字段定義為屬性,但是随之而來的編寫代碼的繁雜。正好可以用到C#3.0自動解決這一問題。避免原來這樣我們手工聲明一個私有成員變量以及編寫get/set邏輯這種重複工作。把它交給編譯器。編譯器會自動地生成私有變量和預設的get/set 操作。你也可以分别定義get和set的“protected”等通路級别。上面代碼就可以簡化成這樣:

--C#3.0自動屬性  

pulic class Company  

   private string companyName{get;set;}  

   //很簡單封裝  

編譯器會自動建立一個私有字段,并讓擷取通路器Geter和設定通路器Seter指向這個私有字段,用于使用者引用操作,自動屬性很大程度上簡化代碼編寫繁瑣,這樣做我們能有更多精力放在業務邏輯的實作上。下一節講對自動屬性做一定執行個體的補充并進一步介紹其他新特性。

本文轉自chenkaiunion 51CTO部落格,原文連結:http://blog.51cto.com/chenkai/765471