2013-05-28 39 views
2

C#中的varstring和有什麼不一樣?C#中的var和string有什麼區別?

+0

可能重複[var關鍵字有什麼意義?](http://stackoverflow.com/questions/209199/whats-the-point-of-the-var-keyword)甚至[使用var關鍵字在C#](http://stackoverflow.com/questions/41479/use-of-var-keyword-in-c-sharp)(downvote因爲你的問題可以很容易地在谷歌或msdn的幫助下回答) –

+0

我不喜歡爲什麼有些人投票否決這個問題。我知道這個愚蠢的問題,但與懷疑工作永遠不會改善你的編碼。所以這就是我問的原因。 – John

回答

10

關鍵字var用於隱式類型的聲明。如果您對變量使用命名類型,則除了可讀性之外沒有其他區別(並且意見不同,哪個更好)。例如:

var s = "asdf"; 

給出完全相同的結果爲:

string s = "asdf"; 

但是,如果你有一個未命名的類型,你必須使用var聲明具有該類型的變量。例如:

var o = new { s = "asdf" }; 

目前沒有相應的聲明中使用了一個名爲類型,因爲那是創建沒有名稱的對象的類型。

當結果沒有命名類型時,var關鍵字通常與LINQ和LINQ擴展方法一起使用。示例:

var result = someList.Where(x => x.Age < 10).Select(x => new { name = x.Name }); 
+0

謝謝Guffa!我的答案。 – John

+1

ie很好地處理匿名類型,非常好地說:) +1 – tariq

4

var是隱式類型和string是一個明確的類型,但這些聲明是functionaly相當於

var implicitString = "hello"; 
string explicitString = "hello"; 

只有在方法範圍內聲明的變量可以有一個隱式類型var。使用時,編譯器會從作業的右側推斷出類型。

+0

其實我們有時候把數據源存放在var中(就像下面的場景一樣)。所以我很困惑它將字符或工作序列存儲爲dataTable或ArrayList。 var qurey = datasource(); //按頁面順序如果(qurey!= null) { ddlpagenubers.DataSource = qurey; – John

+0

@John:它存儲'datasource()'返回的任何內容。檢查方法返回類型確定。 –

+1

雅!我知道了。感謝您的回答。 – John

0

有一個在VB.NET沒有實際的區別,還有一個discussion更多信息

2

首先,這些是C#的關鍵字,而不是ASP.NET。

string是一種類型 - 顯式類型,基本上被編譯器替換爲System.String

var是一個代表類型的關鍵字 - 編譯器可以告訴變量的類型應該是什麼類型(比如說函數的返回類型或文字)。如果你使用一個字符串,編譯器將會像上面那樣做同樣的替換。

2

var用於聲明隱式類型變量,其中編譯器會自動識別類型。 var可以容納任何類型的數據。字符串是僅用於保存字符串數據的顯式聲明。

var i=5; 
var a="abcd"; 
var b= 5.5555; 
var c=new class(); 


String s = "ABCD"; 
1

var和string之間沒有合法的比較。

'var'用於聲明隱式類型,比如int,string,double,一個對象等等。當你不完全知道方法的返回類型或者你不關心它在所有。

「字符串」是一種特殊的數據類型,它只能保存字符串數據而不是任何類型。

此外,對於var類型,必須在聲明var變量時定義,即僅在編譯時,否則編譯器將標記編譯時錯誤。 因此而

string abc; 

是可能的但

var abc; 

是不可能的。

+1

謝謝Tariq,它清除了我的疑問。併爲所有的答案。 – John

相關問題