C#3.0筆記(三)var關鍵字與擴充方法

來源:互聯網
上載者:User

從這篇blog開始真正開始關心3.0裡面的特性,本篇主要介紹下Var關鍵字與 擴充方法。

初識var關鍵字

C#3.0中為我們提供了var關鍵字來定 義隱式化的局部變數,定義方式:

var i = 0;
var  myBool = true;
var myString =  "Henllyee";

其實在使用var關鍵字時,編譯器會根據 初始設定變數的變數值來推斷變數的資料類型,我們可以通過IL來看下上面幾句代 碼在編譯之後的表示:

.locals init ([0] int32 i,
[1] bool myBool,
[2] string myString)

我們可以清 楚的看到編譯器會根據值來推斷變數的類型,所以var關鍵字在本質上並沒有改 變什麼。在foreach字句中也可以使用var關鍵字如:

var lists  = new List<int>() { 1, 2, 4, 100 };
foreach (var  i in lists)
{
Console.Write(i + ",",  i.ToString());
}

使用var關鍵字的注意點

1) 隱式類型變數定義時必須要定義初始值;

2) 不能用null來初始化;

3) 不能使用var作為方法的傳回值或則參數類型;

4) 不能用var定義類的成員;

擴充方法的由來與定義

當一個 類型被定義好了之被編譯進一個程式集後,它的定義工作就已經結束了,一般的 時候我們要添加新的方法的時候,只能去修改代碼重新編譯(也可以通過反射機 制去修改)。在C#3.0裡面為我們提供了擴充方法這樣東西。當我們需要為某個 類型添加功能,但又沒有原始碼的時候,擴充方法是比較好的選擇。下面我們來 對object類型定義一個擴充方法:

public static string  DisplayDefinigAssembly(this object obj)
  {
    return String.Format("{0} lives here :\n\t {1}\n", obj.GetType().Name,
      Assembly.GetAssembly(obj.GetType()));
  }

在定義一個擴充方法時要注意三點:

1)必須把方法定義在靜態類中,也就是說方法也必須是靜態;

2)所有的方法的第一個參數必須加上this關鍵字;

3)擴充方法的調用只能在記憶體中的執行個體中調用,或則通過靜態類調用。

上面的擴充方法就是通過放射機制察看object所在的類型以及程式集。我們 可以看下一個調用的樣本:

static void Main(string[] args)
  {

    DataSet ds = new DataSet();
    Console.Write(ds.DisplayDefinigAssembly());
    Console.Read();

  }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.