【问题标题】:Error when using CopyTo command with BitArrays将 CopyTo 命令与 BitArrays 一起使用时出错
【发布时间】:2011-09-12 17:40:53
【问题描述】:

初学者:这是生成的错误:

目标数组不够长。检查 destIndex 和长度,以及数组的下限。

代码:C#、ASP.NET

环境:VS 2005

我正在做的是使用 BitArray 根据 TreeView 的特定条件翻转位。现在我正在遍历 TreeView,如果从子节点检查节点,我将翻转 BitArray 中的索引。我有多个要遍历的 TreeView,所以我有多个 BitArray。一旦我填充了所有 BitArray,我会将这些位转换为整数值(某种意义上的编码)并将它们放在一个 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);
        }
    }

【问题讨论】:

    标签: c# asp.net treeview bitarray


    【解决方案1】:

    您的源 BitArray MTRRD 在内部存储为 7 个 Int32s 的数组,您的目标数组 conversion 是 11 个 Int32s 的数组。当您执行复制时,您指定的索引为 8,此索引是目标数组的索引,因此复制将溢出,因为您的目标不够长,无法包含从索引 8 开始的所有 7 个 Int32s

    【讨论】:

    • 谢谢。在将我的头撞到墙上 2 小时后,我发布了.. 然后在发布后立即发现我是个白痴。修复。去删除它,我看到你回答了。
    猜你喜欢
    • 2021-04-05
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多