自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.NET Framework隱式類型變量相關(guān)概念詳解

開(kāi)發(fā) 后端
.NET Framework隱式類型變量在實(shí)際應(yīng)用中是一個(gè)非常關(guān)鍵的變量。我們會(huì)具體代碼編寫(xiě)中去詳細(xì)的解讀其中涵蓋的各種含義。

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

var x=5;

使用這個(gè)語(yǔ)句時(shí),編譯器會(huì)使用5來(lái)確定該變量的類型。這表示,該語(yǔ)句實(shí)際上應(yīng)該如下表示:

int x=5;

.NET Framework隱式類型變量是強(qiáng)類型的,在編譯器***次編譯后var就會(huì)被確定的類型所替代的.

隱式類型化的變量關(guān)鍵字與js中的var:

javascript是弱類型的語(yǔ)言,而且javascript中的變量(也包括用var聲明的變量)可以變換類型,如下面的javascript所示:

  1. var s = "abcd";  
  2. s=3;  
  3. alert(s); 

上面的代碼***次給s賦了一個(gè)字符串,而第二行代碼又給賦了一個(gè)整數(shù)。這樣的代碼在javascript中沒(méi)有任何問(wèn)題。但在C#3.0中,var變量一但被初始化,確定類型后,就無(wú)法改變類型了。如下面的代碼是無(wú)法編譯通過(guò)的:

  1. var ss = "abcd";  
  2. ss = 44

綜上所述,在使用.NET Framework隱式類型變量var定義變量時(shí)有以下四個(gè)特點(diǎn):

1.必須在定義時(shí)初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:

  1. var s;  
  2. s = “abcd”; 

它是編譯器根據(jù)上下文推斷出來(lái)的,所以所有一切不能被編譯器推斷出來(lái)的用法都是錯(cuò)誤的。比如不能這樣使用:var nullValue = null;因?yàn)閚ull啥也不是,他是一個(gè)空指針,是一個(gè)不確定的東西。也不能這樣使用:var I = 5;I = “abc”;編譯器根據(jù)***個(gè)賦值會(huì)推斷出它是一個(gè)整型,但是隨后又將一個(gè)字符串賦值給它,這是怎么回事呢?

2.var要求是局部變量。

3.使用.NET Framework隱式類型變量var定義變量和object不同,它在效率上和使用強(qiáng)類型方式定義變量完全一樣。但筆者建議如果事先知道變量的類型,盡量使用強(qiáng)類型方式來(lái)聲明變量。否則,就會(huì)造成由于大量使用var,而使得開(kāi)發(fā)人員很難斷定某個(gè)變量是什么類型。這樣不利于程序的維護(hù)和升級(jí)。(只在編譯器可推斷而人不可推斷的時(shí)候才使用隱式類型局部變量,靠我們?nèi)斯た梢酝茢嗟倪€是不建議使用,顯式的聲明變量類型可以增強(qiáng)代碼的可讀性,這是一個(gè)好的編程習(xí)慣,不要因?yàn)镃# 3.0提供了這樣的特性就大用而特用。)

雖然.NET Framework隱式類型變量var有利有弊,但筆者個(gè)人認(rèn)為,如果將動(dòng)態(tài)語(yǔ)言轉(zhuǎn)換成C#語(yǔ)言,可以考慮使用var來(lái)定義變量。這是因?yàn)閯?dòng)態(tài)語(yǔ)言沒(méi)有類型,而要將其轉(zhuǎn)換成強(qiáng)類型的C#語(yǔ)言,就必須給變量指定個(gè)類型,但事先確定類型是很費(fèi)勁的,不如將其指定成var,再由C#編譯器去確定變量的具體類型。那么如果在轉(zhuǎn)換的過(guò)程中,發(fā)現(xiàn)動(dòng)態(tài)語(yǔ)言的變量改變了類型,該怎么辦呢?這個(gè)可以使用“匿名類”來(lái)解決這個(gè)問(wèn)題。

責(zé)任編輯:曹凱 來(lái)源: IT168
相關(guān)推薦

2010-01-05 16:15:05

.NET Framew

2010-01-05 10:29:43

.NET Framew

2010-01-06 19:22:43

.NET Framew

2010-01-05 16:31:45

.NET Framew

2010-01-06 18:21:24

2010-01-05 18:09:07

.NET Framew

2010-01-05 14:45:58

.NET Framew

2010-01-20 10:27:07

VB.NET隱式類型局

2009-09-11 10:07:05

Linq隱式類型化局部

2010-01-06 10:23:47

.NET Framew

2010-01-12 18:28:28

VB.NET共享變量

2010-01-07 11:28:44

VB.NET Hash

2009-08-25 18:16:02

.NET Framew.NET Framew

2010-01-06 18:27:06

.Net Framew

2009-08-26 15:39:08

C#隱式類型局部變量

2010-01-07 14:10:41

VB.NET數(shù)據(jù)類型

2010-01-06 16:45:42

.Net Framew

2017-09-13 10:58:51

JavaScript轉(zhuǎn)換規(guī)則

2010-01-21 15:47:41

VB.NET變量生存周VB.net

2017-09-05 16:17:35

JavaScript運(yùn)算轉(zhuǎn)換
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)