2016-05-09 5 views
0
string choice = String.ToUpper(Console.ReadLine()); 

Ich möchte eine Zeichenfolge eingeben und es in Großbuchstaben konvertieren. Allerdings gibt es einen Fehler, die besagt:Wie konvertiert man eine Eingabezeichenfolge in Großbuchstaben in C#

cannot convert from 'string' to System.Globalization.CultureInfo'

, das erscheint, wenn ich über die Console.ReadLine() schweben. Warum funktioniert das nicht und welche Korrekturen gibt es? Und gibt es einen anderen Weg, dies zu tun?

+0

Versuchen Sie 'string choice = Console.ReadLine(). ToUpper();' –

+0

Beachten Sie, dass der angezeigte Fehler ("kann nicht konvertieren ...") das eigentliche Problem maskiert - wenn Sie diesen Fehler irgendwie behoben haben, Sie sehen einen anderen ("Ein Objektreferenz ist für das nicht statische Feld, die Methode oder Eigenschaft erforderlich" string.ToUpper '") - gemäß den Antworten gelöst. –

Antwort

2

String.ToUpper eine Instanzmethode ist, bedeutet, dass Sie es benutzen „auf“ Ihre string:

string input = Console.ReadLine(); 
string choice = input.ToUpper(); 

Ansonsten verwenden the overload Sie, die ein CultureInfo Objekt nimmt. Da String nicht in System.Globalization.CultureInfo konvertierbar ist, erhalten Sie den Compilerfehler. Aber es ist auf jeden Fall irreführend, Sie können keine Instanz Methode ohne Instanz verwenden, so ergibt dies einen weiteren Fehler:

String.ToUpper(CultureInfo.CurrentCulture); // what string you want upper-case??! 

An object reference is required for the non-static field, method, or property 'string.ToUpper(CultureInfo)

Verfahren kann nur ohne eine Instanz des Typs verwendet werden, wenn es static ist.

0

Es funktioniert nicht so.

string choice = Console.ReadLine().ToUpper(); 

Die ToUpper Methode gehört zur Klasse String. Es benötigt einen Parameter vom Typ System.Globalization.CultureInfo.

0

können Sie schreiben:

String choice = (Console.ReadLine()) ToUpper();.