日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

微软热门知识点之------c#3.0新特性【转】

發(fā)布時(shí)間:2025/7/25 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微软热门知识点之------c#3.0新特性【转】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C# 3.0

davies 發(fā)表于 2005-9-16 09:53 | 分類: Programming ::

剛DotNet版看到有人貼了C# 3.0 的介紹,大概翻了一下,有不少驚喜,C#中引入了很多其他腳本語(yǔ)言的特性,越來(lái)越適合做快速開(kāi)發(fā),甚至原形開(kāi)發(fā)。簡(jiǎn)要概括如下:

隱式局部變量申明 (Implicitly typed local variables)

就像JavaScript中那樣 var i = 0, 以及 var s = "string" 等,它等效于 int i =0 和 string s="string" 。但不支持空類型,不支持動(dòng)態(tài)類型,也不支持為初始化的隱士申明。這其實(shí)還是靜態(tài)類型,并沒(méi)有多大改善,只是在申明變量的時(shí)候,更"傻瓜"一點(diǎn)。像 Python這種完全動(dòng)態(tài)類型的語(yǔ)言,使用起來(lái)非常爽,比如可以非常方便地將不同類型數(shù)據(jù)放在同一個(gè)數(shù)組或者集合中,但是會(huì)有不少潛在的問(wèn)題,開(kāi)發(fā)大型系統(tǒng)是就會(huì)不太合適。

擴(kuò)展函數(shù)(Extension methods)

可以申明一個(gè)靜態(tài)的函數(shù),其第一個(gè)參數(shù)用this修飾,然后第一個(gè)參數(shù)類型的對(duì)象就可以把它當(dāng)成員函數(shù)使用。比如有一個(gè)函數(shù)是 public static int Str2Int(this string s), 通常的使用方式是Str2Int("string")的樣子,但現(xiàn)在可以用 "string".Str2Int() 的語(yǔ)法形式。這一點(diǎn)跟Python或者Ruby等語(yǔ)言非常類似。

匿名表達(dá)式 (Lambda expressions)

在要寫(xiě)一個(gè)非常小的函數(shù)暫時(shí)用時(shí),還要去聲明一個(gè)函數(shù)就不太合適,而匿名函數(shù)就可以很好的解決這樣的問(wèn)題,非常適合函數(shù)式的編程風(fēng)格。C# 3.0 里也支持匿名表達(dá)式了,使用 => 操作符,左邊是參數(shù)列表,右邊是函數(shù)體,將一個(gè)函數(shù)在一行內(nèi)完成。比如 x => x+1,相當(dāng)于函數(shù) int func(int x) { return x+1;},顯然前者非常簡(jiǎn)潔直觀。用匿名函數(shù)來(lái)操作數(shù)據(jù)集非常方便,比如 filter( list, x => x>5 ) 就可以把list中大于5的數(shù)提取出來(lái)。匿名函數(shù)在 Python 和 List等語(yǔ)言中都支持得很好。C# 中的匿名函數(shù)是delegate的延伸,它也是強(qiáng)類型的,比如定義Func<double, int> f = x => x + 1; 就是錯(cuò)的。

對(duì)象和集合初始化 (Object and collection initializers)

對(duì)象的初始化時(shí)可以顯示地指明參數(shù)列表,比如 Point p = new Point{ X = 1, Y = 2}; ,這樣寫(xiě)出來(lái)的代碼可讀性非常強(qiáng)。但不知道函數(shù)調(diào)用時(shí)能不能這樣給參數(shù)賦值,在Python中是可以的。比如一個(gè)函數(shù)有10個(gè)參數(shù),且都是可選的。加入我想給最后一個(gè)參數(shù)設(shè)定一個(gè)非默認(rèn)值,若在C++中就必須把所與參數(shù)都提供,并且前面的9個(gè)都得是默認(rèn)值。而在Python中,就可以在參數(shù)列表中直接指定給某個(gè)參數(shù)傳遞某個(gè)值,比如 open_html_page("http://blog.daviesliu.net/", proxy = "proxy.rainbud.net")。數(shù)組可以用列表的方式初始化,比如 List<int> list = new List<int> {1,2,3,4};

匿名類型 (Anonymous types)

類中的成員變量也可以是隱式申明的,在申明類時(shí)不用指定類型,其類型由初始化時(shí)的參數(shù)類型決定。這其實(shí)就相當(dāng)于C++中的模版,每一個(gè)成員變量都有一個(gè)參數(shù)類型,當(dāng)給定某種類型來(lái)得到實(shí)例時(shí),就會(huì)實(shí)例化一個(gè)符合這種類型的類。這可以說(shuō)是 C# 2.0 支持范型編程之后的又一次提升。C# 2.0 中的范型集合類叫 Generic Collections,比如上面舉例所用的List<>。據(jù)說(shuō)這種模版效率很高,甚至List<int>要高過(guò)自己實(shí)現(xiàn)的 IntList。

查詢表達(dá)式 (Query expressions)

這是C# 3.0 非常有創(chuàng)意的一個(gè)地方,居然把查詢數(shù)據(jù)庫(kù)用的SQL語(yǔ)法繼承到高級(jí)程序設(shè)計(jì)語(yǔ)言中來(lái),這樣以后開(kāi)發(fā)數(shù)據(jù)庫(kù)程序一定非常方便,有可能操作數(shù)據(jù)庫(kù)就像操作本地變量一樣方便。使用了 from where oderby select 等關(guān)鍵字。比如 from C in customers orderby C.Name where C.City="Beijing" select new { C.Name, C.Age } 就可以賽選出將在北京的客戶,并按照名字排序,結(jié)果中只有名字和年齡兩個(gè)字段。這樣編程,是非常Cool的,不知道性能怎么樣,應(yīng)該不低。

C# 2.0 似乎還沒(méi)有正式發(fā)布,居然 3.0 的規(guī)范就出來(lái)了,而且還有不少亮點(diǎn),值得期待。可以看出,C# 3.0 借鑒了不少腳本語(yǔ)言的特點(diǎn),比如Python,或許微軟從開(kāi)源社區(qū)挖來(lái)了不少高手來(lái)設(shè)計(jì)C#。

轉(zhuǎn)載于:https://www.cnblogs.com/GeneralXU/archive/2007/03/23/685662.html

總結(jié)

以上是生活随笔為你收集整理的微软热门知识点之------c#3.0新特性【转】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。