Entwickler-Ecke
Basistechnologien - Array dynamisch erweitern?
csharpMorpheus - Fr 18.12.09 11:06
Titel: Array dynamisch erweitern?
Hallo allesamt.
Ich möchte eine Array auf UNBESTIMMTEN Index hin initialisieren.
Das heißt, ich möchte keine "feste" Anzahl an möglichen Einträgen haben.
Bsp.:
In php kann ich eine Array befüllen wie ich will bzw. mit so vielen Einträgen
wie mir lieb ist ohne vorher eine feste Anzahl angeben zu müssen.
PHP:
Geht das in C# auch?
Danke
Christian S. - Fr 18.12.09 11:21
Hallo!
Wenn Du sowas machen willst, nimmt man eher eine List<T> also z.B. List<string>. Die hat dann eine Add-Methode. Arrays haben eine konstante Größe und müssten zur Erweiterung komplettt kopiert werden.
Grüße
Christian
JüTho - Fr 18.12.09 14:25
Hallo,
wenn es unbedingt sein muss, geht es mit Array.Copy oder Array.CopyTo. Das ist aber wirklich (wie Christian schon sagte) nur im Ausnahmefällen ein sinnvolles Verfahren. Besser ist in aller Regel List<T>; das hat die Verfahren zur Änderung bereits eingebaut.
Jürgen
csharpMorpheus - Mo 21.12.09 14:27
Super. Danke.
Das ist genau das, was ich suchte.
Gibt es denn eine Möglichkeit, solch eine Liste, z.B. definiert als <string> zum schluss hin
vollständig zu konvertieren, sodass die array z.B. nun ein "ColumnSet" ist um sie als solches übergeben zu können?
Sonst würde ich ja den Compilerfehler "Implizite Konvertierung ..." bekommen!
Habt Ihr da noch nen kleinen Tipp für mich?
Dankeschön :-)
JüTho - Mo 21.12.09 14:40
Was verstehst du unter einem "ColumnSet"? Wenn es eine DataColumnCollection sein soll, ist es unmöglich, weil zu jeder DataColumn nicht nur der Name der Spalte gehört, sondern weitere Informationen (vor allem Datentyp). Wenn es irgendein String-Array sein soll, geht es mit List<T>.ToArray (was für eine Überraschung, dass es so eine Methode gibt).
Jürgen
csharpMorpheus - Mo 21.12.09 14:53
Die Funktion, welche die Liste erwartet ist in ColumnSetBase deklariert und so muss ich es auch übergeben.
Jedoch gibt es wie erwähnt keine ColumnSet.Add-Methode, daher wollte ich es mit "List" machen.
Doch dann kann ich die List nicht in ein ColumnSetBase konvertieren.
Dazu müsste man eine eigene Funktion schreiben, richtig?
Das wäre wohl die einzigste Möglichkeit ...
http://msdn.microsoft.com/en-us/library/aa680889.aspx
JüTho - Mo 21.12.09 18:00
Danke für den Link; jetzt weiß ich, worum es geht - um MS Dynamics CRM Service, also nichts, was zum NET-Standard gehört - und dass ich dazu nichts sagen kann. Jürgen
Kha - Mo 21.12.09 19:34
Die API sieht äußerst merkwürdig aus... aber egal, ist ColumnSet.Attributes denn nicht writeable :?!?: ?
csharpMorpheus - Di 22.12.09 11:02
Doch, sie ist writeable!
Sie hat jedoch keine Add oder Del Funktionen.
Ich kann Sie nur direkt füllen.
Und dazu brauche ich wiederum ein ColumnSet.
Dann ist es ja wieder das selbe.
Kha - Di 22.12.09 20:13
csharpMorpheus hat folgendes geschrieben : |
Ich kann Sie nur direkt füllen. |
Dann mach das doch.
C#-Quelltext
1:
| columnSet.Attributes = list.ToArray(); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!