新聞中心
.NET Framework中有一種新的特性,叫做.NET Framework隱式類型變量。我們會在這篇文章中詳細(xì)的為大家介紹相關(guān)知識。使用vs 2008,可以聲明一個變量,讓編譯器隱式地決定該變量的類型。LINQ就是使用這個功能處理所創(chuàng)建的變量的。要使用這個功能,需要使用var關(guān)鍵字:#t#

成都創(chuàng)新互聯(lián)是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信平臺小程序開發(fā),十余年建站對成都建筑動畫等多個行業(yè),擁有豐富的營銷推廣經(jīng)驗。
var x=5;
使用這個語句時,編譯器會使用5來確定該變量的類型。這表示,該語句實際上應(yīng)該如下表示:
int x=5;
.NET Framework隱式類型變量是強類型的,在編譯器***次編譯后var就會被確定的類型所替代的.
隱式類型化的變量關(guān)鍵字與js中的var:
javascript是弱類型的語言,而且javascript中的變量(也包括用var聲明的變量)可以變換類型,如下面的javascript所示:
- var s = "abcd";
- s=3;
- alert(s);
上面的代碼***次給s賦了一個字符串,而第二行代碼又給賦了一個整數(shù)。這樣的代碼在javascript中沒有任何問題。但在C#3.0中,var變量一但被初始化,確定類型后,就無法改變類型了。如下面的代碼是無法編譯通過的:
- var ss = "abcd";
- ss = 44;
綜上所述,在使用.NET Framework隱式類型變量var定義變量時有以下四個特點:
1.必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:
- var s;
- s = “abcd”;
它是編譯器根據(jù)上下文推斷出來的,所以所有一切不能被編譯器推斷出來的用法都是錯誤的。比如不能這樣使用:var nullValue = null;因為null啥也不是,他是一個空指針,是一個不確定的東西。也不能這樣使用:var I = 5;I = “abc”;編譯器根據(jù)***個賦值會推斷出它是一個整型,但是隨后又將一個字符串賦值給它,這是怎么回事呢?
2.var要求是局部變量。
3.使用.NET Framework隱式類型變量var定義變量和object不同,它在效率上和使用強類型方式定義變量完全一樣。但筆者建議如果事先知道變量的類型,盡量使用強類型方式來聲明變量。否則,就會造成由于大量使用var,而使得開發(fā)人員很難斷定某個變量是什么類型。這樣不利于程序的維護和升級。(只在編譯器可推斷而人不可推斷的時候才使用隱式類型局部變量,靠我們?nèi)斯た梢酝茢嗟倪€是不建議使用,顯式的聲明變量類型可以增強代碼的可讀性,這是一個好的編程習(xí)慣,不要因為C# 3.0提供了這樣的特性就大用而特用。)
雖然.NET Framework隱式類型變量var有利有弊,但筆者個人認(rèn)為,如果將動態(tài)語言轉(zhuǎn)換成C#語言,可以考慮使用var來定義變量。這是因為動態(tài)語言沒有類型,而要將其轉(zhuǎn)換成強類型的C#語言,就必須給變量指定個類型,但事先確定類型是很費勁的,不如將其指定成var,再由C#編譯器去確定變量的具體類型。那么如果在轉(zhuǎn)換的過程中,發(fā)現(xiàn)動態(tài)語言的變量改變了類型,該怎么辦呢?這個可以使用“匿名類”來解決這個問題。
分享名稱:.NETFramework隱式類型變量相關(guān)概念詳解
文章源于:http://fisionsoft.com.cn/article/dhhiheh.html


咨詢
建站咨詢
