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

我不确定这是否可能在c#中,但我有一个变量定义

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

然后在程序中我希望有一个选项来调整程序中的大小,然后主例程将在它上面启动并进行一些计算

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

由于各个部分的整个程序都在使用这个数组,(在各种函数下)我应该如何使用这个部分

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

那么它会改变这个全局变量大小吗?

你无法调整arrays的大小; 您必须声明所需大小的新数组,并将原始数组的内容复制到新数组中。

更新:我不喜欢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(); } 
  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 myList = new List(10); // initial capacity is 10 

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

使用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);