是否有一种检查变量的方法是标量类型?
标量变量是包含整数,float,double,string或boolean但不包含数组对象
的变量感谢
答案 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))) { }