c# - 如何制作通用类型转换函数

标签 c# .net generics

<分区>

Possible Duplicate:
is there a generic Parse() function that will convert a string to any type using parse?

我想制作一个通用函数来执行某些操作,例如:

ConvertValue<T>(string value)

如果 Tint 则该函数会将值转换为 int 并返回结果。

类似地,如果Tboolean,该函数会将value 转换为boolean 并返回它。

这个怎么写?

最佳答案

是这样的吗?

public static T ConvertValue<T>(string value)
{
    return (T)Convert.ChangeType(value, typeof(T));
}

然后你可以像这样使用它:

int val = ConvertValue<int>("42");

编辑:

如果类型 U 实现 IConvertible,您甚至可以更通用地执行此操作而不依赖 string 参数 - 这意味着您必须指定两个类型参数:

public static T ConvertValue<T,U>(U value) where U : IConvertible
{
    return (T)Convert.ChangeType(value, typeof(T));
}

我考虑过捕获 Convert.ChangeType() 可能引发的 InvalidCastException 异常 - 但在这种情况下您会返回什么? 默认(T)?让调用者处理异常似乎更合适。

关于c# - 如何制作通用类型转换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884653/

相关文章:

c# - 自定义附加事件的处理程序

c# - .NET 中 OOP 设计模式的可下载代码示例?

javascript - 使用 SHA256 和 .NET/Node.js 对密码进行哈希处理

swift - Swift 中 X 的通用集合?

c# - 在表达式中引用通用属性

ios - Swift 泛型类作为委托(delegate)

c# - 如何获取 .NET 中的类列表

c# - 如何将 Type 变量发送到通用方法?

c# - 使用 HttpContext.Current.Application 存储简单数据

c# - 十进制类型的声明后缀