c#3.0學習

來源:互聯網
上載者:User

匿名型別是在初始化的時候根據初始化列表自動產生類型的一種機制,利用對象初始化器來建立匿名對象的對象。如:

var oec=new {Name="oec2003", Age=100}

在建立對象的語句中用到了var和new兩個關鍵字,

var關鍵字用來聲明一個匿名型別的對象名字,var和Object不同,她是一種強型別,在此是起到了一個預留位置的作用,編譯時間編譯器會推斷出實際類型。

new關鍵字後直接是一對大括弧,並不是類型名稱,因為匿名型別的名字是在編譯時間由編譯器自動產生。大括弧裡的Name和Age為匿名型別的屬性,可以看到是在Name和Age的後面直接賦值,並沒有指明類型,也將由編譯器來推斷出他們的類型,比如編譯後會將Name推斷為string型,Age推斷為Int型。所以我們可以看到匿名型別給我們帶來了很大的方面和靈活性,同時也將使代碼變得不易看懂。

上面的代碼經過編譯後會產生類似如下代碼

class Anonymous1
{
  private int _name = oec2003;
  private int _age = 100;
  
  public int a
  {
    get { return _name; }
    set { _name = value; }
  }
  public int b
  {  get { return _age; }
    set { _age = value; }
  }
}

在同一個程式中如果定義的不同匿名型別中的對象初始化器中的名稱,類型,和順序都相同,將會長生同一個匿名型別的不同執行個體,如下:

var oec1=new {Name="oec2003" ,Age=100}
var oec2=new {Name="oec2004" ,Age=200}
oec1=oec2

我們可以這樣來訪問匿名型別中的成員

var oec=new {Name="oec2003", Age=100}
string name=oec.Name;
int age=oec.Age

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.