gpt4 book ai didi

c# - 给定一个类型和一个字符串,您可以尝试将字符串转换为该类型而不询问类型吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:14:05 25 4
gpt4 key购买 nike

我有一个 List<Type>表示来自自定义脚本语言的基于文本的命令的签名。我正在尝试确定如何解析 String[]List<object>其中对象类型与 List<Type> 相关联.基本上给了一个Type t我想尝试投 String s那个Type .

到目前为止我有这个

Type t = ...;
String s = ...;
if(Convert.ChangeType(s, t) != null)
{

}

思考后我怀疑这是正确的 Convert.ChangeType 更多的。它旨在简单地更改给定对象的类型,而不是“解析”它。既然你不能简单地做 (double)"ImAString"我假设此方法将用于在“直接”可转换的对象类型之间进行转换。

有什么通用的解决方案吗?或者是创建大型 switch 的唯一方法在给定的Type并在每种情况下进行解析(将来很可能在开关中缺少类型)?

编辑:此外,ChangeType 的返回类型是对象。我假设如果我要做 retObjectFromChange is double会是真的吗(假设我将类型更改为 double 型)?

最佳答案

Convert.ChangeType() 将尽可能将字符串解析为数字,对不是有效数字的字符串抛出异常。

注意:如果您要在自己的自定义类型之间进行大量转换,您可能需要使用 TypeConverter 代替。 (TypeConverter 在转换原始类型如 string 时效果更好。)

参见: Convert System.String generically to any complex type using "Convert.ChangeType()"

编辑:是的,假设没有抛出异常,Convert.ChangeType("1.02", typeof(double)) is double 应该评估为 true。

关于c# - 给定一个类型和一个字符串,您可以尝试将字符串转换为该类型而不询问类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35635440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com