我正在編寫一個方法來執行智能類型轉換 - 如果類型參數碰巧是字符串,則使用ToString();否則如果轉換不轉換則返回null工作。基本上可以從v
中獲取儘可能多的信息,而不會引發異常。將字符串轉換爲字符串的泛型類型
我檢查T
的確是一個string
之前,我嘗試中投,但編譯器仍然不是一個球迷:
Cannot convert type 'string' to 'T'
這是我的方法:
public T? Convert<T>(object v)
{
if (typeof(T) == typeof(string)) {
return (T)v.ToString(); // Cannot convert type 'string' to 'T'
} else try {
return (T)v;
} catch (InvalidCastException) {
return null;
}
}
也讓我知道如果這是某種不可饒恕的罪行。我用它來處理可能有混合類型的一些數據結構。
還有其他問題。當'T'沒有限制時,你的方法不能有'T?'返回類型。例如,沒有什麼叫'string?',因爲string是一個引用類型。 – 2012-08-08 15:05:52