Autor |
Beitrag |
csharpMorpheus
      
Beiträge: 19
|
Verfasst: Fr 18.12.09 11:06
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.:
C#-Quelltext
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:
Quelltext
Geht das in C# auch?
Danke
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 19
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 19
|
Verfasst: 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 ...
msdn.microsoft.com/e...ibrary/aa680889.aspx
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Mo 21.12.09 19:34
Die API sieht äußerst merkwürdig aus... aber egal, ist ColumnSet.Attributes denn nicht writeable  ?
_________________ >λ=
|
|
csharpMorpheus 
      
Beiträge: 19
|
Verfasst: 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
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: Di 22.12.09 20:13
|
|