VS2008 Beta2 終於出來了,迫不及待的想體驗一下。這裡記述一些我的使用體驗和大家分享。
在這裡我首先從C#3.0的語言本身來走馬觀花來體驗語言層面給我帶來那些驚喜。
從語言本身來看C#3.0直接帶給我們的新特性主要包括一下幾個方面:
1、隱含類型局部變數
2、 擴充方法
3、對象與集合初始化器
4、匿名型別
5、查詢運算式(Linq)
這些新的特性都是在原來C#2.0的基礎上進一步擴充演變過來的,很多事情通過讓編譯器去做而簡化我們程式員的工作,這樣可以減輕程式員的工作量而提高工作效率。
首先我們來體驗一下,隱含類型局部變數這個特性:
var sStr = "My String";
var iInt = 100;
var fFloat = 2.4;
var arr = new[] { 1,2,3,4,5,6,6,7,8,9,10};
這裡的變數聲明都是合法的,前面的var 是C#3.0新增的關鍵字,有了這個關鍵字,編譯器在編譯這段代碼時會自動的根據後面初始化的語句來推斷出變數的類型。
var sStr = "My String";這條語句在編譯器執行是會推斷編譯出 string sStr="My String"; 這裡會將var 替換成 string 這裡的var 不是一個具體的資料類型,它僅僅是個關鍵字,我們可以理解成預留位置。
同樣的道理 var iInt = 100;會編譯成 int iInt=100;
var fFloat = 2.4;會編譯成 float=2.4;
var arr = new[] { 1,2,3,4,5,6,6,7,8,9,10};會編譯成 int [] arr = new[] { 1,2,3,4,5,6,6,7,8,9,10};
注意:
(1)這個var只用於局部變數,可以用於foreach語句,如foreach(var i in arr) 這時我們可以不用關心arr是什麼類型;
(2)初始話語句必須是運算式,必須是編譯器可以推斷出來的類型,如果這樣寫是不合法的var a=null; 因為無法推斷出null的類型是什麼。
下面作個小小的例子加以驗證:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CApp
{
class Program
{
static void Main(string[] args)
{
var i = 30;//隱式類型
var b = 40;
var arr = new[] { 1, 2, 3, 4, 4, 4, 44, 43, 343, 8 };
foreach (var j in arr)
{
Console.WriteLine(j);
}
Console.WriteLine(i);
Console.WriteLine(b);
}
}
}
輸出結果:
1
2
3
4
4
4
44
43
343
8
30
40