簡體   English   中英

使用Array.Copy(a,0,b,0,20)將一個數組復制到另一個數組;

[英]Copy one array to another using Array.Copy(a, 0, b, 0, 20);

如果我點擊btn1,數組1(生成)的包含將會改變。 我想要做的是:點擊btn2(重置btn)之后想要將數組2(n)的元素復制到array1(生成)但我收到此錯誤:目標數組不夠長。 檢查destIndex和length,以及數組的下限。

 public partial class Form1 : Form
    {
        string[] generate = new string[20]   {"Name1","Name2","Name3","Name4","Name5","Name6","Name7","Name8","Name9","Name10","Name11","Name12","Name13","Name14","Name15","Name16","Name17","Name18","Name19","Name20" };
        string[] n = new string[] { "Name1", "Name2", "Name3", "Name4", "Name5", "Name6", "Name7", "Name8", "Name9", "Name10", "Name11", "Name12", "Name13", "Name14", "Name15", "Name16", "Name17", "Name18", "Name19", "Name20" };

    string name;
    int Num;

    public Form1()
    {
        InitializeComponent();
    }

    private void button3_Click(object sender, EventArgs e)
    {
        Application.Exit();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e) // START btn
    {
        Num = int.Parse(textBox1.Text) - 1;
        if (Num < 20)
        {
            if (generate.Length > Num)
            {

                for (int i = Num; i >= 0; i--)
                {

                    name = generate.ElementAt(i);
                    listBox1.Items.Add(name); // Print it to list1 
                    generate = generate.Where(s => s != name).ToArray(); // Delete name after using
                }
            }
            else MessageBox.Show("Sorry, remaining names =" + generate.Length);
            listBox2.Items.Clear();
            listBox2.Items.AddRange(generate);

        }
        else MessageBox.Show("Max name is 20!");

    }

    private void button2_Click(object sender, EventArgs e) // Reset btn
    {
        listBox1.Items.Clear();
        listBox2.Items.Clear();
        textBox1.Clear();
        Array.Copy(n, 0, generate, 0, 20);

    }
}

}

您可以使用LINQ復制數組。

  var array2 =  array1.ToList().ToArray()

如果使用.Copy方法,請確保您的范圍正確

單擊按鈕1時,以下行為生成變量創建一個大小小於20的新數組:

generate = generate.Where(s => s != name).ToArray(); // Delete name

因此,當您調用按鈕2時,您嘗試從大小為20的數組n復制到大小小於20的數組generate

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM