710 Stimmen

Hinzufügen von Werten zu einem C#-Array

Wahrscheinlich eine wirklich einfache dieses - ich bin mit C# beginnen und müssen Werte zu einem Array hinzufügen, zum Beispiel:

int[] terms;

for(int runs = 0; runs < 400; runs++)
{
    terms[] = runs;
}

Für diejenigen, die PHP verwendet haben, hier ist, was ich versuche, in c# zu tun:

$arr = array();
for ($i = 0; $i < 10; $i++) {
    $arr[] = $i;
}

14voto

Thracx Punkte 393

Die Verwendung einer Liste als Vermittler ist der einfachste Weg, wie andere beschrieben haben, aber da Ihre Eingabe ein Array ist und Sie die Daten nicht einfach in einer Liste aufbewahren wollen, nehme ich an, dass Sie sich Sorgen um die Leistung machen könnten.

Die effizienteste Methode ist wahrscheinlich die Zuweisung eines neuen Arrays und dann die Verwendung von Array.Copy oder Array.CopyTo. Dies ist nicht schwer, wenn Sie nur ein Element am Ende der Liste hinzufügen möchten:

public static T[] Add<T>(this T[] target, T item)
{
    if (target == null)
    {
        //TODO: Return null or throw ArgumentNullException;
    }
    T[] result = new T[target.Length + 1];
    target.CopyTo(result, 0);
    result[target.Length] = item;
    return result;
}

Ich kann auch Code für eine Insert-Erweiterungsmethode posten, die einen Zielindex als Eingabe nimmt, falls gewünscht. Es ist ein wenig komplizierter und verwendet die statische Methode Array.Copy 1-2 mal.

13voto

Mark Punkte 968

Basierend auf der Antwort von Thracx (ich habe nicht genug Punkte, um zu antworten):

public static T[] Add<T>(this T[] target, params T[] items)
    {
        // Validate the parameters
        if (target == null) {
            target = new T[] { };
        }
        if (items== null) {
            items = new T[] { };
        }

        // Join the arrays
        T[] result = new T[target.Length + items.Length];
        target.CopyTo(result, 0);
        items.CopyTo(result, target.Length);
        return result;
    }

Dies ermöglicht es, dem Array mehr als nur ein Element hinzuzufügen oder einfach ein Array als Parameter zu übergeben, um zwei Arrays zu verbinden.

10voto

Motti Punkte 104854

Sie müssen das Array zuerst zuweisen:

int [] terms = new int[400]; // allocate an array of 400 ints
for(int runs = 0; runs < terms.Length; runs++) // Use Length property rather than the 400 magic number again
{
    terms[runs] = value;
}

7voto

JB King Punkte 11972
int ArraySize = 400;

int[] terms = new int[ArraySize];

for(int runs = 0; runs < ArraySize; runs++)
{

    terms[runs] = runs;

}

So würde ich es codieren.

5voto

Steve Punkte 623

Wenn Sie wirklich ein Array benötigen, ist das folgende wahrscheinlich das einfachste:

using System.Collections.Generic;

// Create a List, and it can only contain integers.
List<int> list = new List<int>();

for (int i = 0; i < 400; i++)
{
   list.Add(i);
}

int [] terms = list.ToArray();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X