你如何(在C#中)将作为数组的对象转换为对象数组
以下格式的东西:
bool Compare(object valueToCompare)
{
if(valueToCompare.IsArray())
{
foreach(var value in (valueToCompare as Array)){
if(Compare(value));
return true;
return Compare(value);
}
}
else
return Compare(valueToCompare);
}
注意:上面的代码没有太大作用。我只是原型设计。
答案 0 :(得分:3)
假设以下情况属实:
valueToCompare
是一个数组的引用类型(不是,例如,int[]
或DateTime[]
)valueToCompare
是一维的数组(因此声明为一维数组或锯齿状数组)您可以直接投放到object[]
而不是Array
。
bool Compare(object valueToCompare)
{
Type t = valueToCompare.GetType();
if(t.IsArray() && !t.GetElementType().IsValueType && t.GetRank() == 1)
{
foreach(var value in (valueToCompare as object[]))
return Compare(value);
}
else
{
return Compare(valueToCompare);
}
}
如果你的数组是有价值的类型,那么你基本上没有运气。
如果您的阵列是多维的,那么您只需要编写类似的检查来计算您想要支持的维数。
注意:正如您所写的那样,此函数将以递归方式调用自身(else
分支使用相同的参数调用自身)并最终生成{{1} }。我不相信这是你打算做的,但我已经离开了,因为我不知道你实际想要做什么。
此外,这实际上不会编译。我不确定你的循环是什么意图比较;实际上,它只是与数组的第一个元素进行比较,但是如果数组是空的,那么它将不会返回一个值(因此编译错误)。
你尝试在这做什么?