C# 泛型和转换

标签 c# generics casting

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

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)的类型(Int32String 实现)。

关于C# 泛型和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12281826/

相关文章:

c++ - 在模板中指定允许的参数

c# - C#'s equivalent of Java' s <?在泛型中扩展 Base>

c++ - 如何将结构转换为 char[] 数组?

c++ - 如何调用一个方法,该方法需要一个子类对象,子类对象由指向其父类(super class)的指针引用?

java - "Double casting"

c# - 解析 html 帮助程序

c# - 如何在C#中使用管道

generics - 如何链接两个 Kotlin 函数参数的泛型类型?

c# - .NET 线程返回值?

c# - 我可以防止继承的虚方法在子类中被覆盖吗?