簡體   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