首頁 > 後端開發 > C++ > C# 中的泛型型別可以轉換為特定型別嗎?

C# 中的泛型型別可以轉換為特定型別嗎?

Mary-Kate Olsen
發布: 2024-12-29 17:21:13
原創
569 人瀏覽過

Can Generic Types in C# Be Cast to Specific Types?

泛型型別可以轉換成特定型別嗎?

在最近的查詢中,一位具有 C 背景的程式設計師尋求協助,以將泛型類型轉換為 C# 中的特定類型。提供的程式碼:

T HowToCast<T>(T t)
{
    if (typeof(T) == typeof(string))
    {
        T newT1 = "some text";
        T newT2 = (string)t;
    }

    return t;
}
登入後複製

無法編譯,編譯器抱怨無法從「T」轉換為字串。

理解這個問題需要認識到這一點,儘管在一個if 語句,編譯器無法推斷 'T' 是字串型別。結果,鑄造失敗。為了解決這個問題,必須先將 'T' 轉換為 'object',因為任何 'T' 都可以轉換為 'object',然後進一步從 'object' 轉換為所需的特定類型,例如 'string'。

修正後的程式碼:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;
登入後複製

示範了正確的方法。

以上是C# 中的泛型型別可以轉換為特定型別嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板