我可能有以下类型:
带小数的数字:100.90
数字(int32):32
字符串:“”
我想要的是一个函数,它试图解析为十进制,如果它失败,然后尝试解析为 int,如果失败则它是一个字符串。C# 中具有以下功能的任何类型的函数都值得赞赏。
public static object cascadeParse(string obj)
{
decimal decRet;
if (!decimal.TryParse(obj, out decRet))
{
int intRet;
if (!int.TryParse(obj, out intRet))
{
return obj;
}
else
{
return intRet;
}
}
else
{
return decRet;
}
}
但是,此方法将始终decimal
在传递时返回 a 可以解析为int
asint
的内容始终可以解析为decimal
。您可能需要重新排序TryParse
s 以将其int
放在首位。
TryParse () 是你的朋友,但是我不明白你想要什么,因为所有有效的整数也是有效的小数。