我在代码库中遇到一个函数抛出错误:

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接口的类型(这Int32String确实如此)。

10-01 08:08
查看更多