Verdun hat folgendes geschrieben: |
| ich programmiere mit Visual Studio 2005.. |
Ob Du mit Visual Studio 3000 oder mit #D oder mit Notepad oder einem eigenen Editor programmierst, ist hinsichtlich der verwendeten Klassen und Methoden völlig unwichtig. Alles kommt vom
NET Framework. Da ist allenfalls interessant, ob es um 1.1 oder 2.0 oder 3.0 oder 3.5 geht.
Verdun hat folgendes geschrieben: |
| Ja danke.... aber bei mir gibt es den Befehl ToUpper nicht! |
Es geht nicht um einen Befehl, sondern um die Methode
ToUpper(). Methoden werden unter C# (das ist die Programmiersprache) immer mit Klammern gekennzeichnet, um sie von Eigenschaften zu unterscheiden. (Was Befehle sind, kannst Du über den Index der
SDK-Doku erkennen.) Die
SDK-Doku ist sowieso das wichtigste Hilfsmittel - vor allen Foren.
Die folgende Erläuterung kannst Du selbst über die
SDK-Doku herausfinden. Es ist wirklich nicht angebracht, mit solchen primitiven Problemen ein Forum zu belasten (zumal bei dem nach wie vor sehr aussagefähigen Titel):
- Die Console-Klasse bietet für das Abrufen eines einzelnen Zeichens die Methode ReadKey().
- Der Rückgabewert dieser Methode ist vom Typ ConsoleKeyInfo. Dessen Eigenschaft KeyChar ist vom Typ char.
- Die Char-Struktur bietet u.a. die Methode ToUpper():
| Zitat: |
| Konvertiert den Wert eines Unicode-Zeichens in den entsprechenden Großbuchstaben. |
Also ist alles vorhanden und scheint korrekt zu sein. Zumindest ist Deine Fehlerbeschreibung "bei mir gibt es den Befehl ToUpper nicht" so nicht richtig. Aber siehe da - dies ist eine
statische Methode; also ist meine Umsetzung falsch. "Statisch" bedeutet: sie gehört generell zur Klasse Char, nicht zu einem bestimmten Element c. Die Fehlerbeschreibung bedeutet also: "in Bezug auf das Element c gibt es ToUpper() nicht". Richtig wäre:
C#-Quelltext
1: 2:
| ConsoleKeyInfo ki = Console.ReadKey(); char c = Char.ToUpper(ki.KeyChar); |
Auch dafür ist die
SDK-Doku ein hervorragendes Hilfsmittel: Neben Erläuterungen gibt es die Definition und viele Beispiele. Wenn man sich nur auf "Intellisense" verlässt, wird einem das selbständige Denken nicht nur abgenommen, sondern man verlernt es schnell.
Die Suche in der
SDK-Doku hätte außerdem noch ein einfaches Verfahren (mit Beispiel) über
Console.Read() geliefert.
Du siehst: Durch Eigeninitiative kommt man weiter. Jürgen
PS. Ich gebe freilich zu, dass die Bezeichnungen der Klassen, Eigenschaften und Methoden oft verwirren. Das ging gerade mir als Delphi-Umsteiger oft so. Aber wenn man sich in der
SDK-Doku die Liste "Alle Member" und die Kurzbeschreibungen durchliest, wird man sehr oft automatisch auf ein passendes Element gestoßen.
PS 2. Bitte entschuldige, wenn meine Ausführungen etwas besserwisserisch klingen. Aber auch für Anfänger sind korrekte Bezeichnungen, Formulierungen und Fragen wichtig. Und wenn Du korrekt fragst, wirst Du auch leichter korrekte Antworten bekommen.
PS 3. Der Fehler in meinem Beispiel-Code hatte damit allerdings nichts zu tun; der war darauf zurückzuführen, dass ich einfach etwas hingeschrieben habe, ohne es zu testen. Aber das muss sowieso Deine Aufgabe sein (es ist ja auch Deine Frage); und wie ich erläutert habe, bietet die
SDK-Doku auch die Möglichkeit dazu.
PS 4 (12:39 Uhr). Hier sieht man, dass das NET Framework nicht immer "konsistent" aufgebaut ist.
String.ToUpper() ist nicht statisch, sondern wird direkt auf einen bestimmten String angewendet.
Char.ToUpper(c) ist dagegen statisch. So entstehen oft unerklärliche Fehler; auch deswegen ist die (eigenständige) Suche in der
SDK-Doku so wichtig. (Bitte nicht über string <-> char diskutieren; es kann schon interne Gründe geben, warum das unterschiedlich implementiert wurde.)