Verwendung der nicht zugewiesenen lokalen Variablen 'model'. Ist welche Fehlermeldung ich bekomme. Es ist richtig, wo ich sage, wenn (Modell == null). Ich bin mir nicht sicher, warum es mir einen Kompilierfehler gibt .. jemand bitte helfen.
%Vor%Wie der Fehler angibt, können Sie eine lokale Variable erst verwenden, wenn der Compiler nachweisen kann, dass ihm ein Wert zugewiesen wurde.
Wenn in Ihrem Fall die Bedingung if
falsch ist, wird die Variable model
niemals zugewiesen.
Sie können das Problem lösen, indem Sie ihm zuerst einen Wert zuweisen:
%Vor% Beachten Sie, dass, wenn T
ein Strukturtyp ist, model == null
niemals wahr sein kann.
Sie sollten Ihren Code in
ändern %Vor%Der Compiler weiß nicht, was zugewiesen werden soll, bis Sie es ihm mitteilen.
Anstelle von T model;
verwenden Sie T model = default(T);
Weitere Informationen: Ссылка
edit: Eine andere Möglichkeit besteht darin, die neue Anweisung vor den Deserialisierungsblock zu stellen. Auf diese Weise haben Sie entweder ein neues Objekt oder das deserialisierte Objekt, so wie Sie es jetzt haben.
Beim Arbeiten mit lokalen Variablen muss ihnen immer ein Wert zugewiesen werden, bevor auf sie zugegriffen wird.
Der Grund dafür ist, dass der Entwickler, wenn er die Initialisierung auslässt, normalerweise auf die Runtime angewiesen ist, um ihm seinen Standardwert zuzuweisen, aber falls er dies vergessen sollte, kann dies einige unnötige Fehler verursachen.
Wenn Sie mit Generika arbeiten und nicht angeben, ob Sie eine ReferenceType
oder eine ValueType
erwarten, können Sie sie nicht einfach initialisieren, indem Sie null
zuweisen.
In diesem Fall müssen Sie das default
-Schlüsselwort verwenden .
Dies initialisiert die Variable für Referenztypen auf null
oder weist 0
für numerische Werttypen zu. Für Strukturen wird jedes Mitglied auf seinen Standard initialisiert.
In dem von Ihnen geposteten Beispiel lässt der Vergleich mit null
vermuten, dass diese Methode möglicherweise nur für ReferenceTypes gedacht ist. Wenn dies der Fall ist, fügen Sie am besten auch die class
-Einschränkung hinzu.
Da model
eine lokale Variable ist, gibt Ihnen der Compiler diesen Fehler, weil er nur in der if-Anweisung zugewiesen ist. Wenn die Bedingung if nicht erfüllt ist, wird model
kein Wert zugewiesen. Versuchen Sie, ihm den Standardwert null
zuzuweisen oder fügen Sie eine else-Anweisung hinzu und weisen Sie ihm model
zu.
Lokale Variablen werden nicht automatisch initialisiert, aber Instanzvariablen sind.
%Vor%