如何重新填充数组

本文关键字:数组 填充 何重新 | 更新日期: 2023-09-27 17:55:55

我有填充数组的代码:

var counters = new[] { 1,2,4,8 }

这很好用,但稍后在我的代码中我想做这样的事情:

counters = new[] { 2,2,3,5 }

有什么方法可以做到这一点吗?我对 C# 很陌生,仍在学习

如何重新填充数组

您在问题中编写的代码可以正常工作:第一行将创建一个新数组,第二行还将创建一个新数组并将新数组分配给现有变量。 旧的整数数组将被替换(稍后被垃圾回收)

你的问题是什么?您的代码有效:

    var counters = new[] { 1,2,4,8 };
    counters = new[] { 2, 2, 3, 5 };

您的代码将起作用,但它不会重新填充数组,而是创建一个新数组。你可以这样做

Array.Copy( new int[] { 2,2,3,5 }, counters, 4);

是的,你可以按照你写的去做。

但是,请注意,这将创建一个数组,而不是替换旧数组中的值。如果另一个变量包含对同一数组的引用,这将有所不同。

例 1

var counters = new[] { 1, 2, 4, 8 };
var counters2 = counters;
counters = new[] { 2, 2, 3, 5 };
Console.WriteLine(counters2[0].ToString()); // outputs 1

例 2

var counters = new[] { 1, 2, 4, 8 };
var counters2 = counters;
counters[0] = 2;
counters[1] = 2;
counters[2] = 3;
counters[3] = 5;  // or use Array.Copy as suggested by Henrik
Console.WriteLine(counters2[0].ToString()); // outputs 2