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>())
對於一些很長的,很復雜的變量聲明來說,使用隱含類型聲明可以有效的降低代碼量,也避免了一些錯誤的出現。