我在代码库中遇到一个函数抛出错误:
public static T InternalData<T>()
{
return (T)"100";
}
显然,我已经简化了代码,并将“100”添加为一个文本字符串值。t为
int
型。它抛出一个:
System.InvalidCastException:指定的强制转换无效。
似乎你不能在c中隐式地将字符串转换为
int
,我如何修复这段代码以便它能够处理任何泛型类型的转换?实际代码如下所示:
public static T InternalData<T>()
{
return (T) something (not sure of type or data);
}
最佳答案
尝试:
public static T InternalData<T>(object data)
{
return (T) Convert.ChangeType(data, typeof(T));
}
这适用于实现
IConvertible
接口的类型(这Int32
和String
确实如此)。