首頁 >後端開發 >C++ >如何在 C# 中安全地將通用類型'T”轉換為字串?

如何在 C# 中安全地將通用類型'T”轉換為字串?

DDD
DDD原創
2024-12-29 02:59:14373瀏覽

How to Safely Cast a Generic Type 'T' to a String in C#?

在C# 中轉換泛型類型

開發人員中經常出現以下問題:「錯誤:類型'T' 的值無法轉換為'細繩'。

考慮以下方法:

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

    return t;
}

儘管來自 C 背景,但此程式碼無法編譯。編譯器會拋出錯誤,例如「無法將類型'T'隱式轉換為字串」和「無法將類型'T'轉換為字串。」

理解問題

這裡的關鍵問題是編譯器無法確定「T」的具體類型。即使它位於檢查“T”是否為字串的 if 區塊內,編譯器在編譯時也沒有此資訊。

解決方案

解決這個問題,我們需要對「物件」執行中間轉換。由於任何泛型類型都可以轉換為“物件”,因此我們可以從“物件”轉換為所需的特定類型,在本例中為字串。

這是修正後的程式碼:

T newT1 = (T)(object)"some text";
string newT2 = (string)(object)t;

透過對「物件」執行中間轉換,我們明確指定轉換並確保編譯器可以正確執行操作。

以上是如何在 C# 中安全地將通用類型'T”轉換為字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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