Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# add()正在覆盖由c中的循环生成的Arraylist中的所有值#_C#_Arraylist - Fatal编程技术网

C# add()正在覆盖由c中的循环生成的Arraylist中的所有值#

C# add()正在覆盖由c中的循环生成的Arraylist中的所有值#,c#,arraylist,C#,Arraylist,add()正在覆盖由c#中的循环生成的Arraylist中以前的所有值。代码是: public ArrayList MakeList(int size, int iterations) { ArrayList myList = new ArrayList(iterations); for (int run = 0; run < iterations; run++) { byte[] _byteArray = new byte[size];

add()正在覆盖由c#中的循环生成的Arraylist中以前的所有值。代码是:

public ArrayList MakeList(int size,  int iterations)
{
    ArrayList myList = new ArrayList(iterations);

    for (int run = 0; run < iterations; run++)
    {
        byte[] _byteArray = new byte[size];
        bool success = false;
        while (!success)
        {
            //Some Operations 
            if(condition)
               success = true;
           else 
              continue;
            if(success)
              break;

        }
        myList .Add(_byteArray );
    }

    return myList;
}
publicArrayList生成列表(int-size,int-iterations)
{
ArrayList myList=新的ArrayList(迭代);
对于(int run=0;run

上面的循环总是用最新的字节数组覆盖列表中的值。请帮助我解决这个问题。

起初我认为这是深度复制或浅层复制的问题,但只要您在for循环中初始化字节数组,它就应该工作得很好。我在最后尝试了下面的示例代码,当函数MakeList即将返回时,它工作得非常好。myList指向的三字节数组包含00,01,11,因为我已经插入了它们,并且没有按照您的建议进行覆盖。我为快速输出硬编码了几个参数:

public class Program
    {
        public static void Main(string[] args)
        {
            var col = new ColTest();
            col.MakeList();
         }        
}

public class ColTest
    {
        public ArrayList MakeList()
        {
            var capacity = 3;
            ArrayList myList = new ArrayList(capacity);
            int size = 2;
            for (int run = 0; run < capacity; run++)
            {
                byte[] _byteArray = new byte[size];

                if (run == 0)
                {
                    _byteArray[0] = 0;
                    _byteArray[1] = 0;
                }
                else if (run == 1)
                {
                    _byteArray[0] = 0;
                    _byteArray[1] = 1;
                }
                else if (run == 2)
                {
                    _byteArray[0] = 1;
                    _byteArray[1] = 1;
                }

                myList.Add(_byteArray);
            }

            return myList;
        }
    }
公共类程序
{
公共静态void Main(字符串[]args)
{
var col=新的ColTest();
col.MakeList();
}        
}
公共类感冒测试
{
公共ArrayList生成列表()
{
var容量=3;
ArrayList myList=新的ArrayList(容量);
int size=2;
对于(int run=0;run

希望这有帮助

“覆盖”是什么意思<代码>ArrayList myList=新的ArrayList(迭代)---此处为空。因此,没有什么可以覆盖的。您不应该首先使用
ArrayList
。使用通用的
T[]
array或
List
。现在已经不是2003年了……旁注:
success=true
循环中没有任何条件。意味着只有一次循环迭代。你的问题仍然不完整。我有一种感觉,OP试图简化代码,使之成为一个易于阅读的问题,但在途中删除了一些关键的代码行……发布的代码没有显示明显的错误。尝试创建一个小型但完整的(控制台)应用程序来演示您的问题。