Entwickler-Ecke
C# - Die Sprache - Merkwürdiges Verhalten bei strings
dennismijo - Mi 14.01.09 18:12
Titel: Merkwürdiges Verhalten bei strings
Hallo.
Ich sitze gerade bei einer Aufgabe und komme komischerweise an einer eigenlich simplen stelle, wegen einer merkwürdigen ausgabe nicht weiter.
Also ich habe folgende Klasse:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| class Coin { string ary = "";
public void setA(string s) { ary = s; }
public void genDec() { int erg = ary[ary.lenght-1];
Console.Writeline(erg); } } |
Das Hauptprogramm gibt an setA einen string der zB diesem entspricht "0101011010".
Wenn ich nun einfach den Wert von erg ausgebe (der ja eigentlich 0 oder 1 sein müsste) kommt bei mir immer die zahl 48 heraus.
Wenn ich jedoch die Ausgabe so starte:
C#-Quelltext
1:
| Console.WriteLine(arty[ary.lenght - 1), |
kommt mein gewünschtes Ergebnis.
Ich habe schon sehr komplexere Programme in C# geschrieben, doch hier, kann ich es mir nicht erklären und verzweifle ;)
Jemand eine Idee? ;)
Christian S. - Mi 14.01.09 18:16
Zuerst einmal finde ich es erstaunlich, dass Dein String die Eigenschaft "leng
ht" kennt :D
Zum anderen musst Du mal überlegen, was Du in dieser Zeile machst:
C#-Quelltext
1:
| int erg = ary[ary.lenght-1]; |
Du hast links einen
int, rechts hast Du einen
char. Da wird ein impliziter Cast ausgeführt, was wohl den Ordinalwert des Chars ergeben dürfte.
dennismijo - Mi 14.01.09 18:21
Ok, darüber habe ich schon nachgedacht.
Wie ist es mir dann möglich ein Element aus dem String zu entnehmen?
leider funktioniert sowas wie Convert.ToIn32 auch nicht :/
Christian S. - Mi 14.01.09 18:23
Du musst den Char halt vorher in einen String konvertieren, aber das sollte ja keine große Hürde sein :-)
IMHO ist Int32.Parse(...) logischer (im Sinne von OOP) als Convert.ToInt32.
Greenberet - Mi 14.01.09 18:55
bzw. nachdem es sich hier nur um 1 ziffer handelt kannst du auch
int erg = ary[ary.length-1]-'0'; machen =)
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!