我是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;
}
Run Code Online (Sandbox Code Playgroud)
这里重要的是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;
}
Run Code Online (Sandbox Code Playgroud)
你会像这样使用它:
if (toRet.IsNumber());
Run Code Online (Sandbox Code Playgroud)
这需要在一个static class.
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |