我正在编写一个方法来执行智能类型转换 - 如果类型参数碰巧是字符串,则使用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