稍后在程序中在 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];
这样它就会改变这个全局变量的大小?
不能调整数组大小;必须声明所需大小的新数组,并将原始数组的内容复制到新数组中。
更新:我不喜欢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
优点是性能和空间分配是预定义的,这并不意味着每次向集合添加项目时都需要重新创建集合,因为它将使用现有的分配量,直到达到它,然后在内部增加它。