新聞中心
運行庫中的C# 泛型講的就是將C# 泛型類型或方法編譯為 Microsoft 中間語言 (MSIL) 時,它包含將其標識為具有類型參數(shù)的元數(shù)據(jù)。C# 泛型類型的 MSIL 的使用因所提供的類型參數(shù)是值類型還是引用類型而不同。***次用值類型作為參數(shù)來構(gòu)造泛型類型時,運行庫會創(chuàng)建專用泛型類型,將提供的參數(shù)代入到 MSIL 中的適當位置。對于每個用作參數(shù)的***值類型,都會創(chuàng)建一次專用C# 泛型類型。

C# 泛型應(yīng)用實例:
例如,假設(shè)您的程序代碼聲明了一個由整數(shù)構(gòu)造的堆棧,如下所示:
- Stack
stack;
在此位置,運行庫生成 Stack
- Stack
stackOne = new Stack (); - Stack
stackTwo = new Stack ();
但是,如果在程序代碼中的其他位置創(chuàng)建了另一個 Stack
對于引用類型,C# 泛型的工作方式略有不同。***次使用任何引用類型構(gòu)造泛型類型時,運行庫會創(chuàng)建專用泛型類型,用對象引用替換 MSIL 中的參數(shù)。然后,每次使用引用類型作為參數(shù)來實例化構(gòu)造類型時,無論引用類型的具體類型是什么,運行庫都會重用以前創(chuàng)建的泛型類型的專用版本。之所以可以這樣,是因為所有引用的大小相同。
例如,假設(shè)您有兩個引用類型:一個 Customer 類和一個 Order 類,并且進一步假設(shè)您創(chuàng)建了一個 Customer 類型的堆棧:
- class Customer { }
- class Order { }
- Stack
customers;
在此情況下,運行庫生成 Stack
- Stack
orders = new Stack ();
不同于值類型,對于 Order 類型不創(chuàng)建 Stack
C# 泛型代碼:
- customers = new Stack
();
與前面使用 Order 類型創(chuàng)建的 Stack
此外,使用類型參數(shù)實例化泛型 C# 類時,無論它是值類型還是引用類型,可以在運行時使用反射查詢它,并且可以確定它的實際類型和類型參數(shù)。
運行庫中的C# 泛型的基本內(nèi)容就向你介紹到這里,希望對你了解和學(xué)習(xí)運行庫中的C# 泛型有所幫助。
當前文章:淺析運行庫中的C#泛型
分享地址:http://m.fisionsoft.com.cn/article/cceeogj.html


咨詢
建站咨詢
