| 

.NET C# Java Javascript Exception

Antwort #A24524 zur Frage #F16468: Undefinierten Array füllen

Diese Antwort hat bisher 3 Versionen. Frage #F16468: Undefinierten Array füllen - Antwort #A24524


Version 3
23.01.2012 14:45:01
Dies ist die aktuelle Version
Den Begriff undefinierte Arrays hab ich zwar noch nie gehört aber ich vermute mal die meinst Arrays mit dynamischer Größe:

Wie fülle ich einen undefinierten Array?

Durch Zuweisung eines anderen Arrays:
Dim array() As String 
array = Split(String, "|")

Was auch gleich die letzte Frage beantwortet:
Wofür könnte man überhaupt einen undefinierten Array gebrauchen (macht das überhaupt einen Sinn)?
Also immer dann, wenn ich ein anderes Arrays zuweisen möchte. Oder die Größe des Arrays erst später mit "ReDim" festlegen möchte.

Mit ReDim müsste ich doch immer die Größe festlegen und es dann füllen oder?
Beim reinen ReDim ja.
Du kannst auch erst Teile des Arrays befüllen und selbiges dann dynamisch erweitern wenn du merkst der Platz reicht nicht mehr. Ist aber sehr ressourcenintensiv da das Array in ein neues kopiert wird. Wichtig ist dann das Schlüsselwort Preserve um die Daten zu erhalten.
Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim array(4) 'Alle vorherigen Elemente werden gelöscht
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> ,, test3, test4

Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim Preserve array(4) 'Performancekiller
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> test, test2, test3, test4


Ist es dann nicht besser eine 'Liste/(Arraylist)' zu verwenden?
In dem meißten Fällen ist eine generische List(of T) besser als ein Array.
Eine ArrayList entspricht eine List(of Object) also einer Liste von Objekten.

Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim Preserve array(4) 'Performancekiller
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> test, test2, test3, test4

'Im Vergleich zu:
Dim list as new List(of String)
list.Add("test")
list.Add("test2")
list.Add("test3")
list.Add("test4")
Console.Write(String.Join(", ", list.ToArray())) '=> test, test2, test3, test4


Zum Thema ein interessanter Artikel: ReDim Preserve als Performancekiller
Floyd 14,5k 3 9
Version 2
23.01.2012 14:43:45
Den Begriff undefinierte Arrays hab ich zwar noch nie gehört aber ich vermute mal die meinst Arrays mit dynamischer Größe:

Wie fülle ich einen undefinierten Array?

Durch Zuweisung eines anderen Arrays:
Dim array() As String 
array = Split(String, "|")

Was auch gleich die letzte Frage beantwortet:
Wofür könnte man überhaupt einen undefinierten Array gebrauchen (macht das überhaupt einen Sinn)?
Also immer dann, wenn ich ein anderes Arrays zuweisen möchte. Oder die Größe des Arrays erst später mit "ReDim" festlegen möchte.

Mit ReDim müsste ich doch immer die Größe festlegen und es dann füllen oder?
Beim reinen ReDim ja.
Du kannst auch erst Teile des Arrays befüllen und selbiges dann dynamisch erweitern wenn du merkst der Platz reicht nicht mehr. Ist aber sehr ressourcenintensiv da das Array in ein neues kopiert wird. Wichtig ist dann das Schlüsselwort Preserve um die Daten zu erhalten.
Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim array(4) 'Alle vorherigen Elemente werden gelöscht
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> ,, test3, test4

Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim Preserve array(4) 'Performancekiller
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> test, test2, test3, test4


Ist es dann nicht besser eine 'Liste/(Arraylist)' zu verwenden?
In dem meißten Fällen ist eine generische List(of T) besser als ein Array.
Eine ArrayList entspricht eine List(of Object) also einer Liste von Objekten.

Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim Preserve array(4) 'Performancekiller
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> test, test2, test3, test4

'Im Vergleich zu:
Dim list as new List(of String)
list.Add("test")
list.Add("test2")
list.Add("test3")
list.Add("test4")
Console.Write(String.Join(", ", list.ToArray())) '=> test, test2, test3, test4
Floyd 14,5k 3 9
Version 1
23.01.2012 14:41:21
Den Begriff undefinierte Arrays hab ich zwar noch nie gehört aber ich vermute mal die meinst Arrays mit dynamischer Größe:

Wie fülle ich einen undefinierten Array?

Durch Zuweisung eines anderen Arrays:
Dim array() As String 
array = Split(String, "|")

Was auch gleich die letzte Frage beantwortet: Wofür könnte man überhaupt einen undefinierten Array gebrauchen (macht das überhaupt einen Sinn)?

Mit ReDim müsste ich doch immer die Größe festlegen und es dann füllen oder?
Du kannst erst Teile des Arrays befüllen und selbiges dann dynamisch erweitern wenn du merkst der Platz reicht nicht mehr. Ist aber sehr ressourcenintensiv da das Array in ein neues kopiert wird. (Wichtig das Schlüsselwort Preserve um die Daten zu erhalten)
Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim Preserve array(4) 'Performancekiller
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> test, test2, test3, test4


Ist es dann nicht besser eine 'Liste/(Arraylist)' zu verwenden?
In dem meißten Fällen ist eine generische List(of T) besser als ein Array.
Eine ArrayList entspricht eine List(of Object) also einer Liste von Objekten.

Dim array(2) As String
array(1) = "test"
array(2) = "test2"
ReDim Preserve array(4) 'Performancekiller
array(3) = "test3"
array(4) = "test4"
Console.Write(String.Join(", ", array)) '=> test, test2, test3, test4

'Im Vergleich zu:
Dim list as new List(of String)
list.Add("test")
list.Add("test2")
list.Add("test3")
list.Add("test4")
Console.Write(String.Join(", ", list.ToArray())) '=> test, test2, test3, test4
Floyd 14,5k 3 9