繁体   English   中英

是否有一个C#等同于Java的Number类?

[英]Is there a C# equivalent to Java's Number class?

我是C#的新手,来自Java,我想检查某个对象是否是一个数字(可以是整数,双精度,浮点数等)。 在Java中,我通过说if (toRet instanceof Number)做到这一点。 我希望有一个类似C#的东西,如if (toRet is Number)但到目前为止我还没能找到一个这样做的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的对象将解析为整数,有时作为双精度解析,并且很少作为字节解析,但最后我真正关心的是字节值。

嗯,是的,但它是一种扩展方法,只需要所有可能性。

就是这个:

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(数字,输出值)等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM