Unity學習筆記 泛型

2021-10-08 15:25:53 字數 1535 閱讀 5786

泛型就

是將型別做引數

約束t:

struct

型別引數

必須是值型別

。可以指定除

nullable 以外的任何值型別。 有關更多資訊,請參見 使用可以為 null 的型別(c# 程式設計指南)。t:c

lass

型別引數

必須是引用型別

;這一點也適用於任何

類、介面、委託或陣列

型別。

t:new()

型別引數

必須具有無引數的公共建構函式

。當與其他約束一起使用時,new()

約束必須最後指定。

t:《基類名》

型別引數必須是指定的

基類或派生自指定的基類。

t:《介面名稱》

型別引數

必須是指定的介面或實現指定的介面

。可以指定多個介面約束。約束介面也可以是泛型的。

t:u為 t 提供的型別引數

必須是為 u 提供的引數或派生自為 u

提供的引數。這稱為

裸型別約束。

泛型的應

泛型類,泛型方法,泛型介面,泛型委託,泛型集合

一句話講,需要資料型別的地方就可以用泛型

常用泛型設計一些通用(基於不同型別的復用)的演算法。

練習案例↓                       ab互換

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using system.collections;

namespace demogenric

static void main3(string args)

}//class my

////}

class my

public void swap(ref t a, ref t b)

}class your

public void swap(ref t a, ref t b)

}}

泛型約束 where

namespace demogenric2

}//class mywhere t:struct //值型別:列舉 結構

////class mywhere t : class //引用型別:類,介面,委託

//class mywhere t :animal,ifly

inte***ce ifly

class animal

class dog:animal,ifly

}

學習筆記 泛型

object型別引數有2個問題 1 裝箱拆箱,效能損耗 傳入乙個int值 棧 object又在堆裡面,如果把int傳遞進來,就會把值從棧裡面copy到堆裡 使用的時候,又需要用物件值,又會copy到棧 拆箱 2 型別安全問題,可能會有,因為傳遞的物件是沒有限制的 泛型方法與普通方法效能一致,還能乙個...

泛型學習筆記

泛型是 2.0 版 c 語言和公共語言執行庫 clr 中的乙個新功能。泛型將型別引數的概念引入 net framework,型別引數使得設計如下類和方法成為可能 這些類和方法將乙個或多個型別的指定推遲到客戶端 宣告並例項化該類或方法的時候。例如,通過使用泛型型別引數 t,您可以編寫其他客戶端 能夠使...

C 學習筆記 泛型

泛型將型別引數的概念引入了.net,當我們需要設計類和方法,並將它們的型別制定推遲到客戶端 宣告,並例項化該型別和方法時,可以使用泛型。泛型使之前的想法成為了可能。使用泛型避免了執行時強制轉換或裝箱操作帶來的風險。簡單來說,首先制定乙個特定符號代替實際型別,當建立該型別的例項時,才指定它的實際型別。...