C#3.0新特性之隱式類型局部變數的使用

來源:互聯網
上載者:User

首先說明一下,此新特性的專題基於MS五月份分布的C#3.0規範,但是官方中文版還沒有出來,結合自己的實踐和理解,希望能和大家一起分享某些前沿的東東,很有可能一些地方會出錯,望拋磚。

在C# 3.0裡面, 可以對局部變數進行隱式型別宣告, 就是在聲明時可以不指定該變數的類型, 變數在初始化的時候會由編譯器從運算式的上下文中推出真正的類型, 對開發人員來說, 無疑是簡化了很多, 主要是通過新的關鍵字var, 有如下面的例子:

var i = 5;
var s = "Hello";
var d = 1.0;
var numbers = new int[] {1, 2, 3};
var orders = new Dictionary<int, Order>();

其實上面的聲明方法和之前在1.x和2.x中以下的聲明方法是等效的:

int i = 5;
string s = "Hello";
double d = 1.0;
int[] = new int[] {1, 2, 3};
Dictionary<int, Order> orders = new Dictionary<int, Order>();

方便是絕對的, 就像我們之前在某些別的進階語中, 早就實現了此功能, 但是對某局部變數進行隱式型別宣告, 也要遵循一定的條件限制:

- 聲明變數時, 必須對該變數進行初始化.

- 初始化該變數時, 必須使用對應的運算式, 而不能簡單地用一個對象或是集合本身, 但如果是使用了關鍵字new建立的對象或是集合卻是合法的, 因為那已經是一個運算式了.

- 變數初始化的運算式在編譯時間, 絕對不可以是null類型.

- 如果將要進行隱式型別宣告的局部變數包含多個聲明, 則要保證每個初始設定式都有相同的編譯時間類型, 保持類型一致, 不能一會是int, 一會又變成了int[].

下面我們來看幾個有誤的聲明例子:

例子1:

var x; //聲明變數時沒有初始化

例子2:

var y = {1, 2, 3}; //集合本身不能作為初始設定式

例子3:

var z = null; //編譯時間類型不允許為null

在現行的Orcas編譯環境下, 可以使用var聲明局部變數, 同時也向後相容, 即原來的方式是可用的. 另外, 根據MS官方的文檔說來, var聲明適用於for語句的初始設定式中, 在using語句中資源獲得時也可用, 舉個例子可以在foreach語句中的迭代變數應用var:

var numbers = int[] { 1, 3, 5, 7, 9};
foreach(var n in numbers) Console.WriteLine(n);

不過這樣用的前提要求該集合類型必須可以枚舉, var就可以自動被編譯器認作int類型了。

相關文章

聯繫我們

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