gpt4 book ai didi

c# - 适用于所有数据类型的动态 TryParse

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

我需要检查一个对象是否可以转换为特定的数据类型,并想出了这个:

public static bool TryParseAll(System.Type typeToConvert, object valueToConvert)
{

bool succeed = false;

switch (typeToConvert.Name.ToUpper())
{
case "DOUBLE":
double d;
succeed = double.TryParse(valueToConvert.ToString(), out d);
break;
case "DATETIME":
DateTime dt;
succeed = DateTime.TryParse(valueToConvert.ToString(), out dt);
break;
case "INT16":
Int16 i16;
succeed = Int16.TryParse(valueToConvert.ToString(), out i16);
break;
case "INT":
Int32 i32;
succeed = Int32.TryParse(valueToConvert.ToString(), out i32);
break;
case "INT32":
Int32 i322;
succeed = Int32.TryParse(valueToConvert.ToString(), out i322);
break;
case "INT64":
Int64 i64;
succeed = Int64.TryParse(valueToConvert.ToString(), out i64);
break;
case "BOOLEAN":
bool b;
succeed = Boolean.TryParse(valueToConvert.ToString(), out b);
break;
case "BOOL":
bool b1;
succeed = bool.TryParse(valueToConvert.ToString(), out b1);
break;
}

return succeed;
}

请问除了这个还有其他办法吗?哪个更动态、更高效?

谢谢!

最佳答案

您应该使用 TypeDescriptor 类:

public static T Convert<T>(this string input)
{
var converter = TypeDescriptor.GetConverter(typeof(T));
if(converter != null)
{
//Cast ConvertFromString(string text) : object to (T)
return (T)converter.ConvertFromString(input);
}
return default(T);
}

当然,如果转换失败,这将抛出异常,因此您需要尝试/捕获它。

关于c# - 适用于所有数据类型的动态 TryParse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26135340/

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