有没有一个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中的对象会解析为整数,有时解析为双精度,很少解析为字节,但最后我真正关心的是字节值。

有没有一个C#等价于Java';s数字类

是的,但这是一个扩展方法,只对所有可能性进行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)等