微软热门知识点之------c#3.0新特性【转】
C# 3.0
davies 發表于 2005-9-16 09:53 | 分類: Programming ::剛DotNet版看到有人貼了C# 3.0 的介紹,大概翻了一下,有不少驚喜,C#中引入了很多其他腳本語言的特性,越來越適合做快速開發,甚至原形開發。簡要概括如下:
隱式局部變量申明 (Implicitly typed local variables)
就像JavaScript中那樣 var i = 0, 以及 var s = "string" 等,它等效于 int i =0 和 string s="string" 。但不支持空類型,不支持動態類型,也不支持為初始化的隱士申明。這其實還是靜態類型,并沒有多大改善,只是在申明變量的時候,更"傻瓜"一點。像 Python這種完全動態類型的語言,使用起來非常爽,比如可以非常方便地將不同類型數據放在同一個數組或者集合中,但是會有不少潛在的問題,開發大型系統是就會不太合適。
擴展函數(Extension methods)
可以申明一個靜態的函數,其第一個參數用this修飾,然后第一個參數類型的對象就可以把它當成員函數使用。比如有一個函數是 public static int Str2Int(this string s), 通常的使用方式是Str2Int("string")的樣子,但現在可以用 "string".Str2Int() 的語法形式。這一點跟Python或者Ruby等語言非常類似。
匿名表達式 (Lambda expressions)
在要寫一個非常小的函數暫時用時,還要去聲明一個函數就不太合適,而匿名函數就可以很好的解決這樣的問題,非常適合函數式的編程風格。C# 3.0 里也支持匿名表達式了,使用 => 操作符,左邊是參數列表,右邊是函數體,將一個函數在一行內完成。比如 x => x+1,相當于函數 int func(int x) { return x+1;},顯然前者非常簡潔直觀。用匿名函數來操作數據集非常方便,比如 filter( list, x => x>5 ) 就可以把list中大于5的數提取出來。匿名函數在 Python 和 List等語言中都支持得很好。C# 中的匿名函數是delegate的延伸,它也是強類型的,比如定義Func<double, int> f = x => x + 1; 就是錯的。
對象和集合初始化 (Object and collection initializers)
對象的初始化時可以顯示地指明參數列表,比如 Point p = new Point{ X = 1, Y = 2}; ,這樣寫出來的代碼可讀性非常強。但不知道函數調用時能不能這樣給參數賦值,在Python中是可以的。比如一個函數有10個參數,且都是可選的。加入我想給最后一個參數設定一個非默認值,若在C++中就必須把所與參數都提供,并且前面的9個都得是默認值。而在Python中,就可以在參數列表中直接指定給某個參數傳遞某個值,比如 open_html_page("http://blog.daviesliu.net/", proxy = "proxy.rainbud.net")。數組可以用列表的方式初始化,比如 List<int> list = new List<int> {1,2,3,4};
匿名類型 (Anonymous types)
類中的成員變量也可以是隱式申明的,在申明類時不用指定類型,其類型由初始化時的參數類型決定。這其實就相當于C++中的模版,每一個成員變量都有一個參數類型,當給定某種類型來得到實例時,就會實例化一個符合這種類型的類。這可以說是 C# 2.0 支持范型編程之后的又一次提升。C# 2.0 中的范型集合類叫 Generic Collections,比如上面舉例所用的List<>。據說這種模版效率很高,甚至List<int>要高過自己實現的 IntList。
查詢表達式 (Query expressions)
這是C# 3.0 非常有創意的一個地方,居然把查詢數據庫用的SQL語法繼承到高級程序設計語言中來,這樣以后開發數據庫程序一定非常方便,有可能操作數據庫就像操作本地變量一樣方便。使用了 from where oderby select 等關鍵字。比如 from C in customers orderby C.Name where C.City="Beijing" select new { C.Name, C.Age } 就可以賽選出將在北京的客戶,并按照名字排序,結果中只有名字和年齡兩個字段。這樣編程,是非常Cool的,不知道性能怎么樣,應該不低。
C# 2.0 似乎還沒有正式發布,居然 3.0 的規范就出來了,而且還有不少亮點,值得期待。可以看出,C# 3.0 借鑒了不少腳本語言的特點,比如Python,或許微軟從開源社區挖來了不少高手來設計C#。
轉載于:https://www.cnblogs.com/GeneralXU/archive/2007/03/23/685662.html
總結
以上是生活随笔為你收集整理的微软热门知识点之------c#3.0新特性【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用正则表达式去掉html代码
- 下一篇: 请问生产成本收集器与标准成本评估有什么关