C 2 0 雜項技術,以及C 語言的未來發展

2021-04-02 04:23:54 字數 2577 閱讀 9864

屬性訪問器保護級別的變化

c# 2.0 允許我們對乙個屬性的get和set訪問器使用不同的訪問級別修飾符:

class customer

internal set(this.name=value;}

}...

}一些注意點

屬性訪問器(get或set)上應用的訪問修飾符必須「小於」屬性上應用的訪問修飾符;「小於」的意思即「更嚴格」,例如protected小於public。

只能在乙個屬性訪問器(get或set)上指定比屬性上的訪問修飾符「更小」的訪問修飾符。

對於介面中屬性的宣告,不能給屬性訪問器(get或set)指定任何訪問修飾符,只能預設為public。

屬性訪問器保護級別的變化規則完全適用於c#的索引器。

---------------------------------------------

命名空間別名限定符的引入

c# 2.0 允許我們使命名空間別名限定符(::)來避免不同命名空間中型別名稱衝突的問題:

using sc = system.collections;

using zc = zhucheng.collections;

class program

}一些注意點

當使用命名空間別名限定符(::)時,如果zc:arraylist,編譯器可以確保這是乙個只適用於「命名空間別名」的限制符,不會辨析為其他型別、或者成員限定符(.)。

關鍵字global可以放在命名空間別名限定符(::)的左邊,它使得編譯器只去搜尋那些所有的命名空間,而不會去搜尋其他的型別、或成員。

盡可能地使用命名空間別名限定符(::),而減少使用點號(.)這樣的通配限定符。

---------------------------------------------

pragma指示符的引入

c# 2.0 允許我們使用命名空間別名限定符(::)來避免不同命名空間中型別名稱衝突的問題:

class program

static void main()

}幾個注意點

目前pragma指示符只支援#pragma warning

#pragma warning disable 可以禁止掉任何編譯器警告資訊。

#pragma warning restore 可以恢復被disable掉的任何編譯器警告資訊。

可以在disable和restore後面跟上具體的警告**號,從而來禁止或者恢復特定的警告資訊。

#prama是乙個編譯預處理功能,不影響任何**執行機制。

---------------------------------------------

conditional特性類的引入

c# 2.0 允許我們使用conditional特性類來告訴編譯器根據「特定的預定義指示符條件」來在類上應用特性。

#define debug

using system;

using system.diagnostics;

[conditional("debug")]

public class testattribute : attribute{}

[test]

class myclass{}

幾個注意點

如果定義了條件指示符,如#define debug,那麼編譯器將在myclass類上應用testattribute特性。

如果沒有定義條件指示符,如#undef debug,myclass類照樣可以正常使用,但是其上將不在應用testattribute特性。

注意區別c# 2.0 中的conditional特性類和c# 1.0中的conditional特性方法。

定長buffer的引入

c# 2.0 引入定長來使得我們可以在結構裡宣告c風格的陣列,從而更加方便地實現託管**和非託管**的互操作:

unsafe struct myclass

幾個注意點

定長buffer只能使用在unsafe**的上下文中,不可以在非unsafe的**中使用。

使用定長buffer所定義的字段在結構型別的例項物件中將按照它們的宣告順序來進行記憶體布局。

注意區別unsafe**中的定長buffer和我們通常使用的託管陣列。

定長buffer主要應用在託管**和非託管**互操作的情況,除此之外,我們一般使用託管陣列。

---------------------------------------------

c# 3.0 與未來發展

c# 2.0 的核心機制在於泛行程式設計的引入,它賦予了型別引數式多型的能力,將對今後的c#**構造有重要影響。

研發中的c# 3.0 將xml、sql兩中資料處理技術引入到c#這樣的強型別語言中,極大地豐富了c#語言的資料處理能力,是乙個極具遠見的創新。

c#語言的發展越來越多體現融合「設計模式+庫」的思想,「語言的發展就是庫的發展」。

C 2 0 雜項技術,以及C 語言的未來發展

屬性訪問器保護級別的變化c 2.0 允許我們對乙個屬性的get和set訪問器使用不同的訪問級別修飾符 class customer internal set this.name value 一些注意點 屬性訪問器 get或set 上應用的訪問修飾符必須 小於 屬性上應用的訪問修飾符 小於 的意思即 ...

C 2 0的新特性

c 2.0的新特性 1 區域性型別 就是把乙個類 介面,結構 分成幾部分,系統編譯時自動的組合 利用關鍵字partial修飾 partial class a partial class a 只要類的一部分繼承乙個父類,那整個類都繼承。沒一部分都可以繼承乙個介面,則整個類繼承所有介面 類的一部分一但被...

C 2 0中的可空型別以及 和 zhuan

最近在學習c 2.0,在.net framework 2.0中新增加了system.nullable泛型結構,它具有處理值型別資料具和處理null的功能。例如 system.nullablei 2 i null system.nullableb null 另外c 中還提供了上述表示方法的簡寫形式 i...