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

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

4voto

Mondonno Punkte 83

Array Push Beispiel

public void ArrayPush<T>(ref T[] table, object value)
{
    Array.Resize(ref table, table.Length + 1); // Resizing the array for the cloned length (+-) (+1)
    table.SetValue(value, table.Length - 1); // Setting the value for the new element
}

4voto

Safi Habhab Punkte 401

Ein Ansatz besteht darin, ein Array über LINQ zu füllen

wenn Sie ein Array mit einem Element füllen wollen können Sie einfach schreiben

string[] arrayToBeFilled;
arrayToBeFilled= arrayToBeFilled.Append("str").ToArray();

Wenn Sie außerdem ein Array mit mehreren Elementen füllen wollen, können Sie den vorherigen Code in einer Schleife verwenden

//the array you want to fill values in
string[] arrayToBeFilled;
//list of values that you want to fill inside an array
List<string> listToFill = new List<string> { "a1", "a2", "a3" };
//looping through list to start filling the array

foreach (string str in listToFill){
// here are the LINQ extensions
arrayToBeFilled= arrayToBeFilled.Append(str).ToArray();
}

4voto

Jimmy Punkte 85199

C#-Arrays haben eine feste Länge und sind immer indiziert. Gehen Sie mit Mottis Lösung:

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

Beachten Sie, dass es sich bei diesem Array um ein dichtes Array handelt, einen zusammenhängenden Block von 400 Bytes, in dem Sie Dinge ablegen können. Wenn Sie ein Array mit dynamischer Größe wollen, verwenden Sie eine List<int>.

List<int> terms = new List<int>();
for(int runs = 0; runs < 400; runs ++)
{
    terms.Add(runs);
}

Weder int[] noch List<int> ist ein assoziatives Array - das wäre ein Dictionary<> in C#. Sowohl Arrays als auch Listen sind dicht.

3voto

LCarter Punkte 443

Wenn Sie die Größe des Arrays nicht kennen oder bereits ein bestehendes Array haben, dem Sie etwas hinzufügen möchten. Sie können dies auf zwei Arten angehen. Die erste ist die Verwendung eines generischen List<T> : Um dies zu tun, müssen Sie das Array in ein var termsList = terms.ToList(); und verwenden Sie die Methode Hinzufügen. Wenn Sie fertig sind, verwenden Sie die var terms = termsList.ToArray(); Methode, um wieder in ein Array zu konvertieren.

var terms = default(int[]);
var termsList = terms == null ? new List<int>() : terms.ToList();

for(var i = 0; i < 400; i++)
    termsList.Add(i);

terms = termsList.ToArray();

Die zweite Möglichkeit ist die Größenänderung des aktuellen Arrays:

var terms = default(int[]);

for(var i = 0; i < 400; i++)
{
    if(terms == null)
        terms = new int[1];
    else    
        Array.Resize<int>(ref terms, terms.Length + 1);

    terms[terms.Length - 1] = i;
}

Wenn Sie .NET 3.5 verwenden Array.Add(...);

Beide ermöglichen es Ihnen, dynamisch vorzugehen. Wenn Sie viele Elemente hinzufügen wollen, verwenden Sie einfach eine List<T> . Wenn es sich nur um ein paar Elemente handelt, wird die Leistung bei der Größenänderung des Arrays besser sein. Das liegt daran, dass Sie mehr Aufwand für die Erstellung des List<T> Objekt.

Zeiten in Zecken:

3 Artikel

Array-Größenänderung Zeit: 6

Liste hinzufügen Zeit: 16

400 Artikel

Array-Größenänderung Zeit: 305

Liste hinzufügen Zeit: 20

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