靈魂-放水

          為學日益,為道日損。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks

          (1)用var聲明變量
          js里是用var聲明變量,但兩者不同的是,js里的變量沒有類型,數據才有類型,可以將一個變量指向任意的數據類型而運行自如。
          而C#3.0里在用var聲明變量時必須對其進行初始化,這樣編譯器能夠根據初始化的值知道該變量的類型,將部分程序員要寫的代碼交給編譯器去完成。就是說每個變量的類型還是固定的。
          例如在C#3.0里可以這樣直接聲明并初始化變量:

          var?tbTitle=new?System.Web.UI.WebControls.TextBox();

          的確省寫了很多代碼,呵呵。但是,如果你想把變量聲明和初始化分開,那var關鍵字就無能為力了。

          (2)直接構建對象
          js里創建對象的快捷途徑一直令我很happy,例如:

          var?book={title:'bookTitle',?author:'nate',?id:222};

          現在C#3.0竟也有類似的語法了:

          var?book=new?{title="bookTitle",?author="nate",?id=222};

          其實也是由編譯器做了更多的工作,在背后自己定義了一個類,更多的原理解釋大家自己google吧。

          (3)擴展方法
          js里給一個類擴展方法也就是給prototype原型對象添加一個方法,非常方便。
          現在C#3.0也提供了類似的功能,雖然偶覺得這個新特性可能太靈活了以至影響C#的嚴謹性甚至軟件架構方面的問題,但是無疑這還是很吸引人的:

          public?static?ToInt32(this?String?s){
          ?return?Convert.ToInt32();
          }

          在任意一個類中定義上述靜態方法,那么你的string對象就有直接的ToInt32方法了,是不是很方便?

          (4)創建對象時同時進行初始化
          同樣是提供了一種簡潔的語法來初始化一個對象,例如:

          public?class?Point{
          ?public?int?x;
          ?public?int?y;
          }

          可以這樣實例化:

          var?point=new?Point{x=100,y=200};

          這樣可以少些多少構造函數啊,呵呵

          (5)方便聲明集合對象
          以前對于數組可以直接聲明時初始化:

          string []?s=new?string[]{"red","blue","black","white"};

          而對于ArrayList這樣的集合類型卻沒有簡潔的語法,只能通過Add之類的方法逐一添加,
          而在C#3.0中,所有實現ICollection接口的類都有了簡潔的初始化語法:

          var?alColors=new?ArrayList{"red","blue","black","white"};

          (6)Lambda表達式
          盡管委托作為C#最新引入的一個概念非常優秀,它也是事件機制的基礎。但用起來卻很麻煩,相信每個寫過的人都有體會,現在C#3.0通過Lambda表達式簡化了這個過程。
          Lambda表達式的關鍵特征是將表達式或者語句塊作為參數,通過=>來直接定義一個委托,這個委托的類型會根據一系列的轉換規則,由編譯器決定,例如:

          DemoDelegate?myDelegate?=?(?)?=>?Console.WriteLine(?"Hiya!!"?)?;

          這里的()表示一個空參數的函數,后面的Console.WriteLine("Hiya!!");是函數體。這樣就很方便的實現了委托的定義,大家不妨回憶一下在C#1.1和C#2.0中是如何的麻煩,呵呵。
          Lambda表達式不是那么容易理解,更多信息可以參見C#3.0的語言規范:
          http://news.csdn.net/news/newstopic/26/26742.shtml

          (7)查詢表達式
          雖然我對Ruby了解不多,但總感覺針對集合的查詢,直接在語言中體現,這種靈感來源于Ruby。
          于是C#3.0又多了一項誘人的特性,可以通過類似Sql語句的方式來獲得需要的數據,結果可能存儲于一個集合對象中或其他。
          同樣,沒有能力三言兩語將其說清楚,參見規范:
          http://news.csdn.net/news/newstopic/26/26747.shtml

          posted on 2007-01-20 19:13 放水老倌 閱讀(323) 評論(0)  編輯  收藏 所屬分類: .NET
          主站蜘蛛池模板: 定陶县| 黑水县| 宁蒗| 苏尼特左旗| 赤壁市| 汶上县| 灌阳县| 舞钢市| 中超| 九龙坡区| 渑池县| 平昌县| 交口县| 托克托县| 阜康市| 枣庄市| 安龙县| 丰城市| 醴陵市| 巴彦淖尔市| 洛南县| 晋城| 三门县| 蓝田县| 额敏县| 木兰县| 鹤壁市| 沈丘县| 香格里拉县| 红桥区| 和顺县| 库车县| 本溪| 林周县| 潢川县| 莆田市| 黑龙江省| 肃宁县| 永城市| 汾西县| 马龙县|