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