C# var聲明變數解析

來源:互聯網
上載者:User

標籤:過程   不能   show   3.0   動態   動態語言   而且   事先   ora   

C# var聲明變數解析:
在C#3.0中提供了一種新的聲明變數的方式,這就是var。

通過這個關鍵字,在聲明變數時就無需指定類型了,變數類型是在初始化時由編譯器確定的。代碼如下:
var ss = "abcd";
MessageBox.Show(ss.GetType().ToString());

上面的代碼將顯示System.String,從而證明C#編譯器已經將ss編譯成了String變數了。

而在輸出ss後,再輸入“.”後,會看到將String類型變數的相應方法和屬性也列出來了,因此可以斷定,C#將ss看成了String類型,而不是Object。

所以使用var定義變數同時可以擁有Object和強型別的優點。

不過大家不要將var看成是javascript的var,它們的區別是,javascript是弱類型的語言,而且javascript中的變數(也包括用var聲明的變數)可以變換類型,

如下面的javascript所示:
var s = "abcd";
s=3;
alert(s);

上面的代碼第一次給s賦了一個字串,而第二行代碼又給賦了一個整數。這樣的代碼在javascript中沒有任何問題。

但在C#3.0中,var變數一但被初始化,確定類型後,就無法改變類型了。如下面的代碼是無法編譯通過的:
var ss = "abcd";
ss = 44;

綜上所述,在使用var定義變數時有以下四個特點:
1. 必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:
var s;
s = “abcd”;
2. 一但初始化完成,就不能再給變數賦與初始化實值型別不同的值了。
3. var要求是局部變數。
4. 使用var定義變數和object不同,它在效率上和使用強型別方式定義變數完全一樣。

但筆者建議如果事Crowdsourced Security Testing道變數的類型,盡量使用強型別方式來聲明變數。

否則,就會造成由於大量使用var,而使得開發人員很難斷定某個變數是什麼類型。這樣不利於程式的維護和升級。
雖然var有利有弊,如果將動態語言轉換成C#語言,可以考慮使用var來定義變數。

這是因為動態語言沒有類型,而要將其轉換成強型別的C#語言,就必須給變數指定個類型,但事先確定類型是很費勁的,不如將其指定成var,再由C#編譯器去確定變數的具體類型。

那麼如果在轉換的過程中,發現動態語言的變數改變了類型,該怎麼辦呢?這個可以使用第三部分要講的“匿名類”來解決這個問題。

C# var聲明變數解析

聯繫我們

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