我有一个带有object参数的重写方法.我确定这是否是一个数组,然后想确定它的长度:
public override bool IsValid(object value)
{
Type type = value.GetType();
if (type.IsArray)
{
return ((object[]) value).Length > 0;
}
else
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是如果value是int[],当我尝试强制转换时它会出错object[].有没有办法处理这个演员,所以它适用于任何类型的数组?
Mic*_*Liu 11
铸造value到基System.Array类:
return ((Array) value).Length > 0
Run Code Online (Sandbox Code Playgroud)
通过使用as运算符,您可以进一步简化代码:
public static bool IsValid(object value)
{
Array array = value as Array;
return array != null && array.Length > 0;
}
Run Code Online (Sandbox Code Playgroud)
注意:这将返回true多维数组,例如new int[10, 10].如果您想false在这种情况下返回,请添加支票array.Rank == 1.