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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-29 17:21:13562瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn