158 Stimmen

Neues Element in bestehendes Array in c#.net hinzufügen

Wie man neues Element in bestehenden String-Array in C#.net hinzufügen?

Ich muss die vorhandenen Daten erhalten.

1voto

harpo Punkte 39680

Ich stimme mit Ed überein. C# macht dies nicht so einfach, wie VB es mit ReDim Preserve macht. Ohne eine Auflistung, müssen Sie das Array in ein größeres kopieren.

0voto

JAR Punkte 21

Leider lässt sich eine Liste nicht in allen Situationen verwenden. Eine Liste und ein Array sind unterschiedlich und nicht zu 100 % austauschbar. Es würde von den Umständen abhängen, ob dies eine akzeptable Lösung wäre.

0voto

aevanko Punkte 14245

Versuchen Sie es doch einmal mit dem Stringbuilder Klasse. Sie hat Methoden wie .insert und .append. Sie können hier mehr darüber lesen: http://msdn.microsoft.com/en-us/library/2839d5h5(v=vs.71).aspx

0voto

Dave Blake Punkte 1
private static string[] GetMergedArray(string[] originalArray, string[] newArray)
    {
        int startIndexForNewArray = originalArray.Length;
        Array.Resize<string>(ref originalArray, originalArray.Length + newArray.Length);
        newArray.CopyTo(originalArray, startIndexForNewArray);
        return originalArray;
    }

-1voto

Saif Punkte 2329

Da diese Frage mit der gegebenen Antwort nicht zufrieden ist, möchte ich diese Antwort hinzufügen :)

public class CustomArrayList<T> 
 {  
   private T[] arr;  private int count;  

public int Count  
  {   
    get   
      {    
        return this.count;   
      }  
   }  
 private const int INITIAL_CAPACITY = 4;  

 public CustomArrayList(int capacity = INITIAL_CAPACITY) 
 {  
    this.arr = new T[capacity];   this.count = 0; 
  } 

 public void Add(T item) 
  {  
    GrowIfArrIsFull();  
   this.arr[this.count] = item;  this.count++; 
  }  

public void Insert(int index, T item) 
{  
 if (index > this.count || index < 0)  
    {   
      throw new IndexOutOfRangeException(    "Invalid index: " + index);  
     }  
     GrowIfArrIsFull();  
     Array.Copy(this.arr, index,   this.arr, index + 1, this.count - index);          
    this.arr[index] = item;  this.count++; }  

    private void GrowIfArrIsFull() 
    {  
    if (this.count + 1 > this.arr.Length)  
    {   
      T[] extendedArr = new T[this.arr.Length * 2];  
      Array.Copy(this.arr, extendedArr, this.count);  
      this.arr = extendedArr;  
    } 
  }
 }
}

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