国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#語(yǔ)言的版本及其功能

2023-05-20 20:23:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Visual C# 隨.NET的開(kāi)發(fā)工具Visual Studio一起推出,有如下幾個(gè)版本:

1.0——隨Visual Studio .NET(2002)于2002年2月13日發(fā)布。

1.5——隨Visual Studio .NET 2003于2003年5月20日發(fā)布。

2.0——隨Visual Studio 2005于2005年11月7日發(fā)布。

3.0——隨Visual Studio 2008于2007年11月16日發(fā)布。

4.0——將隨Visual Studio 2010于2010年3月發(fā)布。

3.0版的規(guī)范見(jiàn)Visual Studio 2008安裝目錄中的Word文檔:“C:/Program Files/Microsoft Visual Studio 9.0/VC#/Specifications/2052/CSharp Language Specification.doc”。

下面羅列Visual C# 的各個(gè)主要版本的新增的特點(diǎn)和功能。

1)C# 1.0——與C和C++比較,C# 在許多方面有所限制和增強(qiáng),包括:

 指針——C# 是真正支持指針,但是其指針只能在非安全作用域中使用,而只有具有適當(dāng)權(quán)限的程序,才可以執(zhí)行標(biāo)記為非安全的代碼。絕大多數(shù)對(duì)象的訪問(wèn)是通過(guò)安全的引用(references)來(lái)進(jìn)行的,而引用是不會(huì)造成無(wú)效的,而且大多數(shù)算法都是要進(jìn)行溢出檢查的。一個(gè)非安全指針,不僅可以指向值類型,還可以指向子類和System.Object。也可以使用指針(System.IntPtr)來(lái)編寫安全代碼。

托管(managed受控)——在C# 中,托管內(nèi)存不能顯式釋放,取而代之的是(當(dāng)再?zèng)]有內(nèi)存的引用存在時(shí)的)垃圾收集。但是,引用非托管資源的對(duì)象,例如HBRUSH,是可以通過(guò)標(biāo)準(zhǔn)的IDisposable接口的指示來(lái)釋放指定內(nèi)存的。

多重繼承——在C# 中多重繼承被禁止(盡管一個(gè)類可以實(shí)現(xiàn)任意數(shù)目的接口,這點(diǎn)似Java),這樣做的目的是為了避免復(fù)雜性和“依存地獄”,也是為了簡(jiǎn)化對(duì)CLI的結(jié)構(gòu)需求。

轉(zhuǎn)換——C# 比C++更類型安全,唯一的默認(rèn)隱式轉(zhuǎn)換也是安全轉(zhuǎn)換,例如加寬整數(shù)和從一個(gè)派生類型轉(zhuǎn)換到一個(gè)基類(這是在JIT編譯期間間接強(qiáng)制進(jìn)行的)。在布爾和整數(shù)之間、枚舉和整數(shù)之間都不存在隱式轉(zhuǎn)換,而且任何用戶定義的隱式轉(zhuǎn)換,都必須顯式地標(biāo)出。

數(shù)組聲明——和C/C++的數(shù)組聲明的語(yǔ)法不同,C# 中用“int[] a = new int[5];”代替了C/C++的“int a[5];”。

枚舉——C# 中的枚舉被放入它們自己的命名空間。

特性——可在C# 中可以使用特性(properties,屬性集),訪問(wèn)類似于C++中成員域,與VB相似。

類型反射與發(fā)現(xiàn)——在C# 中可以使用完整的類型反射與發(fā)現(xiàn),這些都會(huì)用到元數(shù)據(jù)所提供的信息。

模板——為了簡(jiǎn)單性,C# 1.0中不支持模板等泛型編程技術(shù)。

2)C# 1.5版的新增功能——/** */ 文檔注釋符、#line hidden預(yù)處理指令、/nowarn和/nostdlib編譯指令、Web窗體、XML Web服務(wù)、ADO.NET、可用Windows窗體和框架創(chuàng)建分布式應(yīng)用程序的表示層、可創(chuàng)建各種Windows和ASP.NET Web應(yīng)用程序和控件的項(xiàng)目模板、可使用非可視組件和相關(guān)功能,將消息隊(duì)列、事件日志和性能計(jì)時(shí)器等資源合并到應(yīng)用程序中、通過(guò)組件設(shè)計(jì)器和框架類為創(chuàng)建組件提供RAD支持。

3)C# 2.0的新特征:

部分類——一個(gè)類可分開(kāi)到多個(gè)文件中實(shí)現(xiàn)。

泛型——C# 從2.0起,開(kāi)始支持泛型或參數(shù)類型。C# 還支持一些C++模板不支持的特性,例如對(duì)泛型參數(shù)的類型約束。另一方面,C# 的表達(dá)式不能用作泛型參數(shù),而這在C++中卻是允許的。C# 的參數(shù)化的類型為虛擬機(jī)的首個(gè)類對(duì)象,允許優(yōu)化和保存類型信息,這一點(diǎn)與Java不同。

關(guān)鍵字yield——迭代器的一種新形式,可通過(guò)功能類型的關(guān)鍵字yield,來(lái)使用協(xié)同例程。

匿名委托——提供了閉包功能。

結(jié)合運(yùn)算符??——返回表中的第一個(gè)非空值,例如:

object nullObj = null;
        object obj = new Object();
        return nullObj ?? obj // returns obj;

可空值類型——可空值類型由問(wèn)號(hào)?來(lái)標(biāo)記(例如,int? i = null;),它可以改善與SQL數(shù)據(jù)庫(kù)的交互。

4)C# 3.0的新特征:

LINQ(Language Integrated Query,語(yǔ)言集成查詢)——"from, where, select"上下文敏感的關(guān)鍵字,允許在SQL、XML、集合等之間進(jìn)行查詢。

對(duì)象初始化——如Customer c = new Customer(); c.Name = "James"; 可被寫成Customer c = new Customer { Name="James" };。

集合初始化——如MyList list = new MyList(); list.Add(1); list.Add(2); 可被寫成MyList list = new MyList { 1, 2 };。

 匿名類型——如var x = new { Name = "James" };。

局部變量類型推論——如var x = "hello";等價(jià)于string x = "hello"; 該特性在匿名類型變量的聲明中需要。

隱含類型的數(shù)組——數(shù)組的類型現(xiàn)在可以省略,所以int[] arr = new int[] { 1, 2, 3 }; 現(xiàn)在可以寫成var arr = new[] { 1, 2, 3 };。

λ表達(dá)式——如listOfFoo.Where(delegate(Foo x) { return x.Size > 10; }) 可被寫成 listOfFoo.Where(x => x.Size > 10);。

編譯器推斷——翻譯λ表達(dá)式到強(qiáng)類型函數(shù)或強(qiáng)類型表達(dá)式樹(shù)。

自動(dòng)屬性——編譯器會(huì)自動(dòng)生成一個(gè)私有實(shí)例變量,而且給出適當(dāng)?shù)墨@取器和設(shè)置器代碼,例如public string Name { get; private set; };。

擴(kuò)展方法——通過(guò)在另一個(gè)靜態(tài)類的一個(gè)方法的首個(gè)參數(shù)中包含this關(guān)鍵字,來(lái)將方法添加到類中。如

public static class IntExtensions {
              public static void PrintPlusOne(this int x) { 
                     Console.WriteLine(x + 1);
              }
         }
         int foo = 0;
         foo.PrintPlusOne();

部分方法——允許代碼Generator生成方法的聲明作為擴(kuò)展點(diǎn),如果有人在另一個(gè)部分類中實(shí)際實(shí)現(xiàn)它,則其只被包含在源代碼編譯中。

5)4.0版準(zhǔn)備增加的新特性主要有:

動(dòng)態(tài)支持——通過(guò)引進(jìn)新類型dynamic來(lái)提供對(duì)動(dòng)態(tài)類型延遲綁定的支持。

Office可編程性——通過(guò)添加命名和可選的參數(shù)、dynamic類型、索引屬性和可選的ref修飾符,大大增強(qiáng)了訪問(wèn)(包括Office自動(dòng)化API在內(nèi)的)COM接口的能力。

類型等價(jià)支持——可配置應(yīng)用程序的內(nèi)置類型信息,以代替從PIA(Primary Interop Assembly,主互操作程序集)導(dǎo)入的類型信息。

協(xié)變與逆變——協(xié)變(covariance)是你能夠使用更多的派生類型而不是由泛型參數(shù)指定,而協(xié)變(contravariance)則讓你使用更少的派生類型。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀来县| 邯郸市| 榆中县| 新丰县| 聂荣县| 北安市| 汤原县| 乌鲁木齐市| 高邑县| 博罗县| 靖远县| 旌德县| 武功县| 高阳县| 广灵县| 青铜峡市| 洛南县| 临武县| 沭阳县| 尚义县| 奉节县| 临澧县| 安阳市| 台南市| 沙坪坝区| 龙泉市| 琼结县| 正蓝旗| 新化县| 葵青区| 家居| 墨脱县| 思茅市| 子长县| 龙井市| 双江| 防城港市| 田林县| 托克托县| 天门市| 易门县|