稍后在程序中在 C# 中调整数组大小

本文关键字:数组 调整 程序 | 更新日期: 2023-09-27 18:34:55

我不确定这在 c# 中是否可行但是我在

 public partial class Form1 : Form
 {...
   ...
    #region used variables
    public ulong[] logP = {0,0,0,0,0,0,0,0}
  ....
  ..

然后在程序的稍后,我希望有一个选项来调整程序中的大小在主要例程启动之前,它会进行一些计算

因为我喜欢使用各种数字和数组大小进行测试,所以我希望有一个选项来调整数组的大小,对于每个测试(但这个数组不绑定到单个过程,它是一个全局变量需要调整大小。

由于各个部分的整个程序都在使用此数组,(在各种功能下(我应该如何放置此部分

    ulong [] sumP = new ulong[numericupdown.valeu];

这样它就会改变这个全局变量的大小?

稍后在程序中在 C# 中调整数组大小

不能调整数组大小;必须声明所需大小的新数组,并将原始数组的内容复制到新数组中。

更新:我不喜欢Array.Resize - 它不会调整数组的大小(如方法名称所暗示的那样(,它会创建一个新数组并替换引用:

    static void Main(string[] args)
    {
        int[] a1 = new int[] { 1, 2, 3 };
        int[] a2 = a1;
        Console.WriteLine("A1 Length: {0}", a1.Length); // will be 3
        Console.WriteLine("A2 Length: {0}", a2.Length); // will be 3
        Array.Resize(ref a1, 10);
        Console.WriteLine("A1 Length: {0}", a1.Length); // will be 10
        Console.WriteLine("A2 Length: {0}", a2.Length); // will be 3 - not good
        Console.ReadLine();
    }

使用 Array.Resize() 调整数组大小,

http://msdn.microsoft.com/en-us/library/bb348051.aspx

例如:

        var intArray = new int[5] { 1, 2, 3, 4, 5 };
        Array.Resize(ref intArray, 10);
    class Program
    {
       static void Main(string[] args)
       {
        var myArr = new int[5] { 1, 2, 3, 4, 5 };
        Array.Resize(ref myArr, 10);
        for (int i = 0; i < myArr.Length; i++)
        {
            Console.WriteLine("   [{0}] : {1}", i, myArr[i]);
        }
        Console.ReadLine();
    }
}
正如

icemanind建议的那样 - 考虑使用List数组,但是作为更好的做法,请确保将数组容量初始化为合理的数量,即:

List<string> myList = new List<string>(10); // initial capacity is 10

优点是性能和空间分配是预定义的,这并不意味着每次向集合添加项目时都需要重新创建集合,因为它将使用现有的分配量,直到达到它,然后在内部增加它。