泛型型別可以轉換成特定型別嗎?
在最近的查詢中,一位具有 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中文網其他相關文章!