有没有一个C#等价于Java';s数字类
本文关键字:数字 Java 有一个 等价于 | 更新日期: 2023-09-27 18:25:06
我是C#的新手,来自Java,我想检查某个对象是否是数字(可以是Integer、Double、Float等)。在Java中,我通过说if (toRet instanceof Number)
来做到这一点。我希望有类似于if (toRet is Number)
的C#,但到目前为止,我还没能找到一个能做到这一点的Number类。有没有办法做到这一点,或者我必须手动检查Integer、Double等?
编辑以获取更多信息:基本上我想做的是最终拥有一个字节数组。然而,当数组存储在文本文件中时,我使用的解析器有时会认为它是一个整数数组或双数组。在Java中,我有这样一个:
JSONArray dblist = (JSONArray)result_;
byte[] reallyToRet = new byte[dblist.size()];
Object toComp = dblist.get(0);
if (toComp instanceof Number)
for (int i=0; i < dblist.size(); ++i) {
byte elem = ((Number) dblist.get(i)).byteValue();
reallyToRet[i] = elem;
}
return reallyToRet;
}
这里的重要部分是if语句。有时dblist
中的对象会解析为整数,有时解析为双精度,很少解析为字节,但最后我真正关心的是字节值。
是的,但这是一个扩展方法,只对所有可能性进行OR运算。
这就是:
public static bool IsNumber(this object value)
{
return value is sbyte
|| value is byte
|| value is short
|| value is ushort
|| value is int
|| value is uint
|| value is long
|| value is ulong
|| value is float
|| value is double
|| value is decimal
|| value is BigInteger;
}
你会这样使用它:
if (toRet.IsNumber());
这需要在static class
中。
我不确定是否有这样的类。但你可以检查,例如,关于整数,请参阅
int val;
if(Int32.TryParse(integer, out val))
else
不太可能,您可以使用Double.TryParse(数字,out val)等