如何检查变量是标量?

时间:2013-10-10 09:17:31

标签: c# .net

是否有一种检查变量的方法是标量类型?

标量变量是包含整数,float,double,string或boolean但不包含数组对象

的变量

感谢

2 个答案:

答案 0 :(得分:7)

这取决于“scalar”的含义,但Type.IsPrimitive听起来很合适:true boolean,整数类型,浮点类型和char }。

您可以在

中使用它
var x = /* whatever */
if (x.GetType().IsPrimitive) {
    // ...
}

对于更精细的方法,您可以改为使用Type.GetTypeCode

switch (x.GetType().GetTypeCode()) {
    // put all TypeCodes that you consider scalars here:
    case TypeCode.Boolean:
    case TypeCode.Int16:
    case TypeCode.Int32:
    case TypeCode.Int64:
    case TypeCode.String:
        // scalar type
        break;
    default:
        // not a scalar type
}

答案 1 :(得分:2)

我不确定这总是有效,但它可能足以满足您的需求:

if (!(YourVarHere is System.Collections.IEnumerable)) { }

或者,检查Type

if(!typeof(YourTypeHere).GetInterfaces().Contains(typeof(System.Collections.IEnumerable))) { }