Ridimensiona l’array in C # più avanti nel programma

Non sono sicuro che sia ansible in c # ma ho una variabile definita in

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

Poi più avanti nel programma voglio avere un’opzione per regolare le dimensioni nel programma prima che le routine principali si avviino su di esso e fare alcuni calcoli

Poiché mi piace testare con numerosi insiemi di numeri e dimensioni di array, mi piacerebbe avere un’opzione per ridimensionare l’array, per ogni test (ma questa matrice non è legata a una singola procedura, è una variabile globale che deve essere ridimensionabile.

Come l’intero programma in varie parti sta usando questo array, (sotto varie funzioni) come dovrei mettere questa parte

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

In modo che cambierebbe questa dimensione variabile globale?

Non è ansible ridimensionare un array; è necessario dichiarare un nuovo array della dimensione desiderata e copiare il contenuto dell’array originale nel nuovo array.

Aggiornamento: Non mi piace Array.Resize – non ridimensiona l’array (come suggerisce il nome del metodo), crea un nuovo array e sostituisce il riferimento:

  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(); } } 

come suggerito da icemanind – considera comunque l’utilizzo di un array di elenchi come migliore pratica, assicurati di inizializzare la capacità dell’array ad un importo ragionevole, ovvero:

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

il vantaggio è rappresentato dalle prestazioni e l’allocazione dello spazio è predefinita e non significa che sia necessario ricreare la raccolta ogni volta che si aggiunge un elemento perché utilizzerà l’importo allocato esistente fino a quando non viene raggiunto, quindi lo aumenta internamente.

Usa Array.Resize() per ridimensionare un array,

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

Per esempio:

  var intArray = new int[5] { 1, 2, 3, 4, 5 }; Array.Resize(ref intArray, 10);