Entwickler-Ecke
C# - Die Sprache - Anzahl Elemente Array
sharpx - Mo 05.01.09 10:56
Titel: Anzahl Elemente Array
Ich würde gerne die anzahl der belegten elemente eines arrays herausbekommen.
mit c++ geht das über sizeof(array)/sizeof(datentyp);
die funktion array.length() gibt mir nur ALLE elemente zurück, jeodch sollten nur die elemente, die auch belegt sind zurückgegeben werden.
definiert ist ein string array:
string[] arr = new string[10];
davon sind zwischen 5-8 elemente belegt, und ich sollte herausfinden wie viel davon nun belegt sind.
danke für die hilfe!
JüTho - Mo 05.01.09 11:02
Hallo,
eine vorgegebene Methode oder Eigenschaft gibt es offensichtlich nicht, wie im Index zur
Array-Klasse in der
SDK-Doku/MSDN nachzulesen ist.
Du musst also eine einfache Schleife selbst schreiben (hier in Pseudo-Code, damit Du selbst noch etwas nachdenken musst):
Quelltext
1: 2: 3: 4:
| Zähler vorbelegen foreach(item in array) if (item belegt) Zähler++ |
Gruß Jürgen
sharpx - Mo 05.01.09 11:05
das dachte ich mir auch schon.
aber mir war unklar wie ich prüfen kann ob ein elemente belegt ist?
danke für die hilfe
sharpx - Mo 05.01.09 11:10
Was natürlich klappt ist:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| for (int i = 0; i < st.Length; i++) { try { if (st[i].Length > 1) { Console.WriteLine(i); } } catch { } } |
Finde diese Möglichkeit aber unsauber und nicht wirklich schön.
Außerdem stürzt mir dabei immer SharpDevelop ab - Ausnahmefehler im Programm. Liegt wohl an st.Length.
Hättest du mir ne Möglichkeit wie ich prüfen kann ob ein Element belegt ist?
EDIT:
Okay C# ist sehr simpel :=)
Hab das jetzt so gelöst:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public static int get_clogged_elements (string[] arr) { int counter = 0; for (int i = 0; i < arr.Length-1; i++) { if (arr[i] != null) counter++; } return counter; } |
EDIT2:
Hast mir wohl grad geantwortet, als ich geantwortet habe :)
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
JüTho - Mo 05.01.09 11:15
Bei einem String ist die richtige Abfrage:
C#-Quelltext
1:
| if (String.IsNullOrEmpty(st[i])) |
Allgemein wäre es so zu machen:
Deine Lösung klappt doch gar nicht:
sharpx hat folgendes geschrieben : |
| Ausnahmefehler im Programm. |
Es liegt daran, dass st[i] null ist, also Length gar nicht bestimmt werden kann.
Jürgen
miniC# - Mo 05.01.09 20:43
verwende doch eine List<T>, die unterscheidet von hause aus zwischen Count und Capacity.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!