Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.Resize<T>-Methode: (T[], Int32)

 

Ändert die Anzahl der Elemente eines eindimensionalen Arrays in die angegebene neue Größe.

Namespace:   System
Assembly:  mscorlib (in mscorlib.dll)

public static void Resize<T>(
	ref T[] array,
	int newSize
)

Parameter

array
Type: T[]

Das eindimensionale nullbasierte Array, dessen Größe geändert werden soll, oder null, um ein neues Array mit der angegebenen Größe zu erstellen.

newSize
Type: System.Int32

Die Größe des neuen Arrays.

Typparameter

T

Der Typ der Elemente des Arrays.

Exception Condition
ArgumentOutOfRangeException

newSize ist kleiner als Null.

Diese Methode weist ein neues Array mit der angegebenen Größe, Elemente aus dem alten Array in das neue Projekt kopiert und ersetzt dann das alte Array mit den neuen Wert. array muss ein eindimensionales Array sein.

Wenn array ist null, diese Methode erstellt ein neues Array mit der angegebenen Größe.

Wenn newSize ist größer als die Length des alten Arrays wird ein neues Array zugeordnet und alle Elemente werden aus dem alten Array in das neue Projekt kopiert. Wenn newSize ist kleiner als das Length des alten Arrays wird ein neues Array zugeordnet und Elemente werden aus dem alten Array in das neue Projekt kopiert, bis das neue Array aufgefüllt wird; die übrigen Elemente im alten Array werden ignoriert. Wenn newSize ist gleich der Length des alten Arrays wird diese Methode keine Aktion ausgeführt.

Diese Methode ist eine O (n) Vorgang, wobei n ist newSize.

Die Resize<T> Methode wird nur ein eindimensionales Array. Die Array Klasse eine Methode zum Ändern der Größe von mehrdimensionalen Arrays nicht einschließt. Zu diesem Zweck müssen Sie Ihren eigenen Code bereitstellen oder eine spezielle Methode in einer Bibliothek eines Drittanbieters aufrufen. Das folgende Codebeispiel veranschaulicht eine mögliche Implementierung für eine Methode, ein Array von der Größe der n Dimensionen.

using System;

public class Example
{
   public static void Main()
   {
      int[,] arr = new int[10,2];
      for (int n1 = 0; n1 <= arr.GetUpperBound(0); n1++) {
         arr[n1, 0] = n1;
         arr[n1, 1] = n1 * 2;
      } 

      // Make a 2-D array larger in the first dimension.
      arr = (int[,]) ResizeArray(arr, new int[] { 12, 2} );
      for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++) 
         Console.WriteLine("{0}: {1}, {2}", ctr, arr[ctr, 0], arr[ctr, 1]);
      Console.WriteLine();


      // Make a 2-D array smaller in the first dimension.
      arr = (int[,]) ResizeArray(arr, new int[] { 2, 2} );
      for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++) 
         Console.WriteLine("{0}: {1}, {2}", ctr, arr[ctr, 0], arr[ctr, 1]);
   }

   private static Array ResizeArray(Array arr, int[] newSizes)
   {
      if (newSizes.Length != arr.Rank)
         throw new ArgumentException("arr must have the same number of dimensions " +
                                     "as there are elements in newSizes", "newSizes"); 

      var temp = Array.CreateInstance(arr.GetType().GetElementType(), newSizes);
      int length = arr.Length <= temp.Length ? arr.Length : temp.Length;
      Array.ConstrainedCopy(arr, 0, temp, 0, length);
      return temp;
   }   
}
// The example displays the following output:
//       0: 0, 0
//       1: 1, 2
//       2: 2, 4
//       3: 3, 6
//       4: 4, 8
//       5: 5, 10
//       6: 6, 12
//       7: 7, 14
//       8: 8, 16
//       9: 9, 18
//       10: 0, 0
//       11: 0, 0
//       
//       0: 0, 0
//       1: 1, 2

Das folgende Beispiel zeigt, wie Ändern der Größe des Arrays auswirkt.

using System;

public class SamplesArray  
{
    public static void Main()  {

        // Create and initialize a new string array.
        String[] myArr = {"The", "quick", "brown", "fox", "jumps", 
            "over", "the", "lazy", "dog"};

        // Display the values of the array.
        Console.WriteLine( 
            "The string array initially contains the following values:");
        PrintIndexAndValues(myArr);

        // Resize the array to a bigger size (five elements larger).
        Array.Resize(ref myArr, myArr.Length + 5);

        // Display the values of the array.
        Console.WriteLine("After resizing to a larger size, ");
        Console.WriteLine("the string array contains the following values:");
        PrintIndexAndValues(myArr);

        // Resize the array to a smaller size (four elements).
        Array.Resize(ref myArr, 4);

        // Display the values of the array.
        Console.WriteLine("After resizing to a smaller size, ");
        Console.WriteLine("the string array contains the following values:");
        PrintIndexAndValues(myArr);
    }

    public static void PrintIndexAndValues(String[] myArr)  {
        for(int i = 0; i < myArr.Length; i++)  
        {
            Console.WriteLine("   [{0}] : {1}", i, myArr[i]);
        }
        Console.WriteLine();
    }
}

/* 
This code produces the following output.

The string array initially contains the following values:
   [0] : The
   [1] : quick
   [2] : brown
   [3] : fox
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After resizing to a larger size, 
the string array contains the following values:
   [0] : The
   [1] : quick
   [2] : brown
   [3] : fox
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog
   [9] :
   [10] :
   [11] :
   [12] :
   [13] :

After resizing to a smaller size, 
the string array contains the following values:
   [0] : The
   [1] : quick
   [2] : brown
   [3] : fox

*/

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: