首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 30:選擇符合 CLS 標準的組件 (上)

     編輯:關於C語言

為何需要 CLS 相容性

.NET 執行環境具有語言獨立性,開發者可使用不同的 .NET 語言撰寫組件。為了讓其他開發者能以任意語言使用你的組件,你建立的組件必須符合共同語言規範(CLS)。

CLS 相容的兩條核心規則

  1. 所有公用與受保護成員的參數與回傳值必須是 CLS 相容型別。
  2. 其他非 CLS 相容的公用或受保護成員,必須提供 CLS 相容的替代方案。

透過編譯器強制檢查

第一條規則很容易落實:在組件層級加上 [assembly: CLSCompliant(true)] 屬性,編譯器會強制整個組件符合 CLS 規範。若公用方法或屬性使用非 CLS 相容型別(如 UInt32),編譯器會報錯:

// 錯誤:回傳無號整數
public UInt32 Foo() { return _foo; }

// 錯誤:參數為無號整數
public void Foo2(UInt32 parm) { }

僅針對可見成員

CLS 相容性檢查只針對組件外部可存取的成員。若 Foo 與 Foo2 為 internal 或 private,則不受限制。只有對外公開的介面才需符合 CLS。

屬性的相容性判斷

屬性是否相容,取決於其型別是否為 CLS 相容且已正確標記。若 MyClass 未標記為 CLS 相容,則擁有該型別屬性的類別也不相容。

設計者的責任

若你的公用/受保護介面不相容,使用者就必須包裝你的型別才能建立相容組件,這增加了他們的負擔。身為組件設計者,應盡力使組件符合 CLS,這是讓使用者輕鬆達成相容性的最簡單途徑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved