Ich bin neu in der Programmierung und habe ein Problem mit dem folgenden Code:
%Vor%Der Compiler sagt: Verwendung der nicht zugewiesenen lokalen Variable 'alphaChar'
Aber ich weise es in meinem Schaltblock zu.
Ich bin sicher, das ist meine Schuld, weil ich nicht genug über Programmierung weiß.
Bitte beraten.
Danke.
Sie ordnen es zu, wenn x 0-9 ist. Was würden Sie erwarten, wenn x
123 wäre? Während Sie vielleicht wissen, dass nur Werte zwischen 0 und 9 übergeben werden, muss der Compiler das nicht - also es muss überlegen, was sonst passieren würde.
Eine Möglichkeit, dies zu vermeiden, ist die Verwendung von default
case in Ihrer switch-Anweisung, mit der Sie eine Ausnahme auslösen können, wenn der Wert nicht im erwarteten Bereich liegt:
Hier ist eine etwas einfachere Alternative, die Ihre switch-Anweisung komplett entfernt:
%Vor%Beachten Sie, dass Sie vorsichtig vorgehen müssen, wenn Sie eine solche Arithmetik verwenden. In Java und C # ist die zugrundeliegende Darstellung garantiert Unicode, was das Leben viel einfacher macht. Ich glaube, es ist in Ordnung für solche Dinge (und Hex-Parsing / Formatierung), aber wenn Sie in exotischere Szenarien wagen, würde es scheitern. Andererseits gilt das auch für viele Techniken zur Code-Vereinfachung. Wenn sie unangemessen angewendet werden, endet die Sache mit einem Durcheinander.
Der Compiler beschweren sich, weil alphaChar möglicherweise undefiniert ist - wenn es nicht einer der Werte in Ihrem switch
ist, dann wurde es nicht definiert. Sie können eines der folgenden Dinge tun:
Vor der ersten Verwendung muss die lokale Variable eindeutig zugewiesen werden (gemäß C # -Spezifikationsregeln). In diesem speziellen Fall garantiert switch construct nicht, dass alphaChar definitiv einem Compilerfehler zugewiesen wird. Sie können AlphaChar einen Anfangswert zuweisen und somit wird es definitiv zugewiesen.
Sie müssen Ihrer switch-Anweisung einen Standardwert hinzufügen.
Der Compiler gibt an, dass es Fälle gibt, die der Variablen keinen Wert zuweisen. Also
hinzufügen %Vor%sagt dem Compiler "falls ich ein Szenario verpasse, mache den Wert this"
oder wenn Sie keinen Standardwert zuweisen möchten:
%Vor%Das ist nicht unbedingt besser, aber ein anderer Weg, es zu tun:
%Vor% Sie weisen der Variablen alphaChar
basierend auf einer Bedingung einen Wert zu. Stellen Sie sich ein Szenario vor, in dem die Variable x
einen anderen Wert als 0 bis 9 enthält. Angenommen, es enthält 10. Dann wird keine der Fallbedingungen von x
erfüllt, daher wird alphaChar
als Ergebnis kein Wert zugewiesen es wird völlig uninitialisiert sein. Wenn Sie also alphaChar
in eine Zeichenfolge konvertieren, konvertiert sie einen Wert in eine Zeichenfolge und gibt sie an die aufrufende Methode zurück. Dies ist der Grund, warum Sie diese Nachricht erhalten.
Wenn Sie eine einfache Lösung erhalten möchten, fügen Sie den folgenden Code unter
hinzu %Vor%-
%Vor% und checken Sie die aufrufenden Methoden ein, ob diese alphaCoords
-Funktion Null zurückgibt oder nicht, wie dies -
Auf diese Weise wird Ihr Code nicht zu komplex sein, oder Sie müssen keine Ausnahmen oder etwas Ähnliches werfen oder behandeln.
Hoffe, dass hilft:).
Der Compiler kann nicht wissen, dass die Variable x
nur Zahlen bis zu 9 enthalten kann (das ist, was Sie in switch
einchecken). Da der Fall default
in Ihrem Switch fehlt, kann vorkommen , dass alphaChar
nicht zugewiesen bleibt. Sie können entweder einen default
case hinzufügen oder der Variablen einen Wert vor dem switch
zuweisen.
Fügen Sie Ihrem Switch einen Standard hinzu, denn wenn x 10 ist, wird alphaChar niemals zugewiesen.
Nachdem Sie die Variable char alphaChar deklariert haben, sollten Sie ihr einen Wert "zuweisen" (setzen Sie ihn auf einen Wert), obwohl Sie erwarten, dass er in der switch-Anweisung einen Wert erhält.
Sie könnten ihm 'A' oder '0' oder so ziemlich alles zuweisen.
Das können Sie in der Deklaration so machen
%Vor%Oder Sie können es separat machen
%Vor%Tags und Links c# switch-statement unassigned-variable