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

C# 2.0 泛型程式設計基礎(四):where 約束條件完整分類、基底類別/介面/建構函式/值型別約束實戰

     編輯:關於C語言

泛型約束:where 子句

C# 僅支援顯式約束(保證型別安全),非強制。無約束時型別參數僅能存取 System.Object 成員。

四種約束類型:

1. 基底類別約束


class A { public void F1() {} }
class B { public void F2() {} }
class C
    where S : A  // S 繼承自 A
    where T : B  // T 繼承自 B
{
    // 可在 S 型別呼叫 F1,T 型別呼叫 F2
}

2. 介面約束


interface IPrintable { void Print(); }
interface IComparable { int CompareTo(T v); }
interface IKeyProvider { T GetKey(); }

class Dictionary
    where K : IComparable
    where V : IPrintable, IKeyProvider
{
    // K 可呼叫 CompareTo,V 可呼叫 Print 和 GetKey
}

3. 建構函式約束


class A { public A() {} }
class B { public B(int i) {} }

class C where T : new()
{
    // 可使用 T t = new T();
}
C c1 = new C(); // OK,A 有無參建構函式
C c2 = new C(); // 錯誤,B 無無參建構函式

4. 值/參考型別約束


public struct A { }
public class B { }

class C where T : struct
{
    // T 為值型別
}
C c1 = new C(); // OK
C c2 = new C(); // 錯誤,B 為參考型別

來源:李建忠老師講座投影片。

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