Starters:这是产生的错误:
目标数组不够长。检查destIndex和length,以及数组的下限。
代码:C#,ASP.NET
环境:VS 2005
我正在做的是使用BitArray根据TreeView的特定条件翻转位。现在我正在遍历TreeView,如果从子节点检查节点,我将在BitArray中翻转索引。我有多个TreeViews,我正在遍历所以我有多个BitArrays。一旦我填充了所有的BitArrays,我会将这些位转换为整数值(在某种意义上编码)并将它们放在一个int数组中。然后最终的目标是将整数值推送到数据库,但显然我无法做到这一点。示例代码如下:
BitArray MTRTECH = new BitArray(8);
BitArray MTRRD = new BitArray(200);
BitArray REVSE = new BitArray(100);
BitArray ETXA = new BitArray(100);
int[] conversion = new int[11];
ParentChildCheck(MTRTECHTreeView, MTRTECH);
MTRTECH.CopyTo(conversion, 7);
ParentChildCheck(MTRRDRTreeView, MTRRD);
MTRRD.CopyTo(conversion, 8); <================ Throws Error Here
ParentChildCheck(REVSECTreeView, REVSE);
REVSE.CopyTo(conversion, 9);
ParentChildCheck(EXTRATreeView, ETXA);
ETXA.CopyTo(conversion, 10);
protected void ParentChildCheck(TreeView parent, BitArray Changes)
{
TreeNode temp = new TreeNode();
for (int index = 0; index < parent.Nodes.Count; index++)
{
temp = parent.Nodes[index];
for (int index2 = 0; index2 < temp.ChildNodes.Count; index2++)
{
ChildCheck(temp.ChildNodes[index2],Changes,index2);
}
}
}
protected void ChildCheck(TreeNode node, BitArray Selection, int value)
{
message2 += node.Text;
Selection.Set(value, true);
counter++;
for (int index = 0; index < node.ChildNodes.Count; index++)
{
value++;
ChildCheck(node.ChildNodes[index],Selection,value);
}
}
答案 0 :(得分:2)
您的来源BitArray
MTRRD内部存储为7 Int32s
的数组,您的目标数组conversion
是一个11 Int32s
的数组。当您执行复制时,您指定索引为8,此索引是目标数组的索引,因此复制将溢出,因为您的desintation不足以包含从索引8开始的所有7 Int32s
。 / p>