91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#強制類型轉換與泛型怎么理解

發布時間:2021-12-02 11:21:19 來源:億速云 閱讀:339 作者:iii 欄目:編程語言

本篇內容主要講解“C#強制類型轉換與泛型怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C#強制類型轉換與泛型怎么理解”吧!

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

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

代碼塊

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

interface ISomeInterface  {...}  class BaseClass  {...}  class MyClass where T : BaseClass,ISomeInterface  {     void SomeMethod(T t)     {        ISomeInterface obj1 = t;        BaseClass      obj2 = t;        object         obj3 = t;     }  }

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

interface ISomeInterface  {...}  class SomeClass  {...}  class MyClass   {     void SomeMethod(T t)     {        ISomeInterface obj1 = (ISomeInterface)t;//Compiles        SomeClass      obj2 = (SomeClass)t;     //Does not compile     }  }

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

class SomeClass  {...}   class MyClass   {          void SomeMethod(T t)          {        object temp = t;        SomeClass obj = (SomeClass)temp;          }  }

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

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

代碼塊

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

public class MyClass   {     public void SomeMethod(T t)     {        if(t is int)        {...}          if(t is LinkedList)        {...}         string str = t as string;        if(str != null)        {...}         LinkedList list = t as LinkedList;        if(list != null)        {...}     }  }

到此,相信大家對“C#強制類型轉換與泛型怎么理解”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

济阳县| 巧家县| 兰溪市| 丹寨县| 土默特左旗| 平阴县| 涞水县| 温泉县| 石首市| 彰武县| 德兴市| 云林县| 滨州市| 工布江达县| 荣成市| 安龙县| 桓仁| 辉县市| 江川县| 如东县| 进贤县| 灵川县| 定日县| 固原市| 台南县| 云南省| 合水县| 贵州省| 全南县| 玉环县| 收藏| 榆中县| 乐亭县| 新晃| 佛山市| 游戏| 本溪| 九江县| 陕西省| 巴林右旗| 云浮市|