Wenn einem Parameter uint
in einem C # -Methodenargument ein Standardwert zugewiesen wird, wie im ersten Codeblock unten gezeigt, erscheint die Meldung "Ein Wert vom Typ 'int' kann nicht als Standardparameter verwendet werden weil es keine Standardkonvertierungen gibt, um 'uint' einzugeben, während es bei der Zuweisung eines int zu einer uint-Variable im Methodenkörper gut ist.
Der Code kompiliert; Die Warnung wird mithilfe der roten, squiggly Unterstreichung in Visual Studio 2010 bereitgestellt.
%Vor%Dies kann leicht gelöst werden, indem 365U anstelle von 365 verwendet wird, also:
%Vor% Ich finde es wirklich schwierig, eine gute Erklärung dafür zu finden, warum es nicht zulässig ist,% int
dem Parameter uint
im Parameter zuzuordnen, wenn es an anderer Stelle gültig ist. Kann mir jemand mit dem "Glühbirnen" -Moment helfen, das ich zu finden versuche?
Es kompiliert für mich, mit Compiler-Versionen von beiden 4.0.30319.1 und 4.0.30319.17379.
Wenn Sie eine ältere Version oder einen anderen Compiler (z. B. einen Mono-Compiler) verwenden, vermute ich, dass es sich um einen Fehler handelt.
EDIT: Wenn es gut kompiliert (und ich kann überhaupt keine Warnung vom Compiler provozieren) dann vermute ich es ist ein Plug-in, wie ReSharper. (Nicht dass ich es auch in ReSharper sehe ...)
Ich kann das in VS2010 nicht reproduzieren.
Ich würde vorschlagen, dass Sie tun den Code auf den ohne die Warnung aktualisieren, nur aus Gründen der Lesbarkeit - aber es ist immer noch gültig Code ohne die Änderung.
In Anbetracht der Tatsache, dass Sie eine Umwandlung vornehmen, also möglicherweise auch den Wert abschneiden, nehme ich an, dass Visual Studio nur Sie warnt , dass ein potenzielles Problem auftreten könnte lädt Sie ein, diese Besetzung explizit zu machen. Insbesondere wenn wir über Standardparameter sprechen, sollte der Standardwert eindeutig angegeben werden. Im Falle einer nicht-expliziten Umwandlung gibt es immer einen Raum für Zweifeln, wie der Cast-Wert aussehen würde.
Tags und Links c# visual-studio-2010