1. ホーム
  2. c#

[解決済み] C# - Typeが数値であるかどうかを判断する方法

2022-07-30 10:10:43

質問

与えられた .Net Type が数値であるかどうかを判断する方法はありますか? 例えば System.UInt32/UInt16/Double はすべて数字です。の長いスイッチケースを避けたい。 Type.FullName .

どのように解決するのですか?

<ストライク
Type type = object.GetType();
bool isNumber = (type.IsPrimitiveImple && type != typeof(bool) && type != typeof(char));

<ブロッククオート

撮影 Guillaumeの解決策 をもう少し詳しく説明します。

public static bool IsNumericType(this object o)
{   
  switch (Type.GetTypeCode(o.GetType()))
  {
    case TypeCode.Byte:
    case TypeCode.SByte:
    case TypeCode.UInt16:
    case TypeCode.UInt32:
    case TypeCode.UInt64:
    case TypeCode.Int16:
    case TypeCode.Int32:
    case TypeCode.Int64:
    case TypeCode.Decimal:
    case TypeCode.Double:
    case TypeCode.Single:
      return true;
    default:
      return false;
  }
}

使用方法

int i = 32;
i.IsNumericType(); // True

string s = "Hello World";
s.IsNumericType(); // False