c# 3.0給我們帶來了很多新特性,其中增加了很多“動態”內容,
讓我們使用起來更加sharp!
我在這里簡單的介紹一下c# 3.0規范中的一些“新鮮”內容,小弟才疏學淺,望大家海涵!
part1:使用隱含類型的本地變量
在c#3.0之前的c#語言中,我們在聲明變量的時候都必須顯式的指定變量類型(int,string之類的)
我們一般都是這樣寫的:
1static void initandprint()
2{
3 int x = 7;
4 string s = "this is a string.";
5 double d = 99.99;
6 int[] numbers = new int[] { 0, 1, 2, 3, 4, 5, 6 };
7
8 console.writeline("x: " + x);
9 console.writeline("s: " + s);
10 console.writeline("d: " + d);
11 console.writeline("numbers: ");
12 foreach (int n in numbers) console.writeline(n);
13}
而在c# 3.0中,我們這樣寫:
1static void initandprint()
2 {
3 var x = 7;
4 var s = "this is a string.";
5 var d = 99.99;
6 var numbers = new int[] { 0, 1, 2, 3, 4, 5, 6 };
7
8 console.writeline("x: " + x);
9 console.writeline("s: " + s);
10 console.writeline("d: " + d);
11 console.writeline("numbers: ");
12 foreach (int n in numbers) console.writeline(n);
13 }
大家應該可以注意到,原來的什么int、string之流都變成了var關鍵字了,甚至連數組的聲明都不例外。
但是我們應該明白一點:
這種機制和perl之類的var內心有著根本性的不同,雖然我們代碼中寫的是var,但是對于編譯器來說,
通過變量的初始化表達式已經“正確的識別出了變量的類型”,所以在編譯生成的msil中,我們是沒有var類型出現的,
而是使用相應的數據類型來代替。
也就是說:
1、var標記的變量一定要初始化!!
2、對于集合類型的var在初始化的時候一定要指明類型(例如使用list<int>())
對于一些很長的,很復雜的變量聲明來說,使用隱含類型聲明可以有效的降低代碼量,也避免了一些錯誤的出現。
新聞熱點
疑難解答