我可能有以下类型:
带小数的数字: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 可以解析为intasint的内容始终可以解析为decimal。您可能需要重新排序TryParses 以将其int放在首位。
TryParse () 是你的朋友,但是我不明白你想要什么,因为所有有效的整数也是有效的小数。