成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C# 強制類型轉換與C# 泛型淺析

開發 后端
C# 強制類型轉換與C# 泛型理解直接影響到對C# 泛型的理解和學習,那么對于C# 強制類型轉換與C# 泛型需要掌握哪些內容呢?本文就向你介紹詳細的內容。

C# 強制類型轉換和普通對象一樣,泛型類的對象也可以采用強制類型轉換轉換成另外的泛型類型,不過只有當兩者在各個方面兼容時才能這么做。C# 編譯器只允許將一般類型參數隱式強制轉換到 Object 或約束指定的類型,如下面代碼塊所示。這樣的隱式強制類型轉換是類型安全的,因為可以在編譯時發現任何不兼容性。

C# 強制類型轉換與C# 泛型實例演示

代碼塊

一般類型參數的隱式強制類型轉換

  1. interface ISomeInterface  
  2. {...}  
  3. class BaseClass  
  4. {...}  
  5. class MyClass where T : BaseClass,ISomeInterface  
  6. {  
  7.    void SomeMethod(T t)  
  8.    {  
  9.       ISomeInterface obj1 = t;  
  10.       BaseClass      obj2 = t;  
  11.       object         obj3 = t;  
  12.    }  

編譯器允許您將一般類型參數顯式強制轉換到其他任何接口,但不能將其轉換到類:

  1. interface ISomeInterface  
  2. {...}  
  3. class SomeClass  
  4. {...}  
  5. class MyClass   
  6. {  
  7.    void SomeMethod(T t)  
  8.    {  
  9.       ISomeInterface obj1 = (ISomeInterface)t;//Compiles  
  10.       SomeClass      obj2 = (SomeClass)t;     //Does not compile  
  11.    }  

但是,您可以使用臨時的 Object 變量,將一般類型參數強制轉換到其他任何類型:

  1. class SomeClass  
  2. {...}  
  3.  
  4. class MyClass   
  5. {  
  6.      
  7.    void SomeMethod(T t)  
  8.      
  9.    {  
  10.       object temp = t;  
  11.       SomeClass obj = (SomeClass)temp;  
  12.      
  13.    }  

不用說,這樣的顯式強制類型轉換是危險的,因為如果為取代一般類型參數而使用的類型實參不是派生自您要顯式強制轉換到的類型,則可能在運行時引發異常。要想不冒引發強制類型轉換異常的危險,一種更好的辦法是使用 is 和 as 運算符,如代碼塊 6 所示。如果一般類型參數的類型是所查詢的類型,則 is 運算符返回 true;如果這些類型兼容,則 as 將執行強制類型轉換,否則將返回 null。您可以對一般類型參數以及帶有特定類型實參的一般類使用 is 和 as。

C# 強制類型轉換與C# 泛型實例:

代碼塊

對一般類型參數使用“is”和“as”運算符

  1. public class MyClass   
  2. {  
  3.    public void SomeMethod(T t)  
  4.    {  
  5.       if(t is int)  
  6.       {...}   
  7.  
  8.       if(t is LinkedList)  
  9.       {...}  
  10.  
  11.       string str = t as string;  
  12.       if(str != null)  
  13.       {...}  
  14.  
  15.       LinkedList list = t as LinkedList;  
  16.       if(list != null)  
  17.       {...}  
  18.    }  

C# 強制類型轉換與C# 泛型相關的內容就向你介紹到這里,希望對你了解和學習C# 強制類型轉換與C# 泛型有所幫助。

【編輯推薦】

  1. C# 泛型實現理解及實例淺析
  2. C# 泛型應用及優點淺析
  3. 淺析C# 泛型約束中的一般約束
  4. C# 泛型約束之派生約束淺析
  5. 淺析C# 泛型約束中的構造函數約束
責任編輯:仲衡 來源: MSDN
相關推薦

2009-08-24 14:51:25

C# 泛型泛型類型

2009-08-24 15:12:13

C# 泛型接口

2009-08-24 18:15:24

C# Dictiona

2009-08-24 11:35:20

C# 泛型應用

2009-08-24 15:50:23

C# 泛型C# 泛型委托

2009-08-24 17:58:19

C# 泛型集合

2009-08-24 17:27:05

C#泛型應用

2009-08-24 16:39:19

C# 泛型應用

2009-08-24 17:39:21

C# 泛型集合

2009-08-24 10:07:57

C#泛型處理

2009-08-24 13:31:38

C# 泛型約束

2009-08-24 10:37:27

C# 泛型

2009-08-24 15:28:19

C# 泛型方法

2013-03-20 09:27:33

C#泛型

2009-08-24 14:26:42

C# 泛型類

2009-08-24 16:01:44

C# 泛型

2009-08-24 16:19:42

C# 泛型方法

2009-08-26 09:36:03

C#泛型

2009-09-01 16:35:55

C#操作String數

2009-09-11 12:41:41

C#類型轉換
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日日精品 | 天天干国产| 国产成人a亚洲精品 | 成人自拍视频 | www.亚洲免费| 97精品超碰一区二区三区 | 日本一区二区三区免费观看 | 国产伦精品一区二区三区精品视频 | 在线观看成年人视频 | 亚洲男人天堂 | 亚洲乱码一区二区三区在线观看 | 最新国产在线 | 欧美国产视频 | 日本超碰在线 | 在线免费观看成年人视频 | 精品无码久久久久久久动漫 | 大象视频一区二区 | av中文在线 | 精品无码久久久久国产 | 久久激情视频 | 中文字幕一区二区三 | 免费在线观看一区二区 | 国产一区二区在线免费观看 | 欧美二区乱c黑人 | 亚洲成人免费视频 | 久久久久91 | 国产不卡一区 | 91麻豆精品国产91久久久更新资源速度超快 | 最新日韩在线 | 天天精品在线 | 精品一区二区三区不卡 | cao在线 | 国产九九精品 | 中文字幕视频在线观看 | 国产亚洲精品一区二区三区 | 亚洲成人免费av | 三级视频国产 | 91免费在线视频 | 97精品超碰一区二区三区 | 国产精品久久久久久久久久久久久 | 欧美久久久久 |