我在我们的代码库中遇到了一个抛出错误的函数:
public static T InternalData<T>()
{
return (T)"100";
}
显然,我已经简化了代码并添加了“100”作为文字字符串值。 T 是 int
类型。
它抛出一个:
System.InvalidCastException: Specified cast is not valid.
在 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
接口(interface)的类型(Int32
和 String
实现)。
关于C# 泛型和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12281826/