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

C# 動靜結合程式設計:協議與約束的本質探討(上)

     編輯:關於C語言

程式世界的兩大元素:協議與約束

動態語言與靜態語言本質上是「協議」(動)與「約束」(靜)兩種元素的作用。C# 融合雙方優勢,善用可呈現動靜結合之美。

被忽略的協議

void B() {
    ArrayList lst = A();
    foreach (string item in lst) {
        Console.WriteLine(item.Length);
    }
}

方法 B 假定方法 A 回傳的 ArrayList 內部皆為 string。這是「協議」——運行時不確定性,A 可能塞入非 string 導致 B 拋出例外。

.NET 2.0 泛型加強靜態約束

void B() {
    List<string> lst = A();
    foreach (string item in lst) {
        Console.WriteLine(item);
    }
}

泛型為 A 加上靜態型別約束,編譯期保證 lst 內皆為 string,消除運行時風險。

約束強弱之分

  • 強約束:安全性高、靜態性強、編譯器支援多
  • 弱約束:動態性強、運行時靈活度高

介面 vs 委派

介面是靜態型別約束;委派僅是靜態簽名約束。委派具更多「協議性」——符合簽名即可調用;介面要求物件必須實作該介面。二者約束強度截然不同。

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