4

我是 C# 的新手,来自 Java,我想检查某个对象是否是数字(它可以是整数、双精度、浮点等)。在 Java 中,我通过说if (toRet instanceof Number). 我希望有类似的 C# 东西,if (toRet is Number)但到目前为止我还没有找到一个这样做的 Number 类。有没有办法做到这一点,还是我必须手动检查整数、双精度等?

编辑以获取更多信息:基本上我想要做的是最终有一个字节数组。但是,当数组存储在文本文件中时,我使用的解析器有时会认为它是整数数组或双精度数组。在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 语句。有时 in 中的对象dblist会解析为整数,有时会解析为双精度数,并且很少会解析为字节,但最后我真正关心的是字节值。

4

2 回答 2

9

嗯,是的,但它是一种扩展方法,它只是对所有可能性进行 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.

于 2013-07-25T15:35:11.027 回答
0

我不确定是否有任何课程。但是您可以检查例如,对于整数,请参阅

int val;
if(Int32.TryParse(integer, out val))  

else

不太可能,您可以使用 Double.TryParse(number, out val) 等。

于 2013-07-25T15:43:29.757 回答