Bin ich in C # aufgefordert, das universelle var-Schlüsselwort für jede Variablendeklaration zu verwenden? Wenn ja, muss ich diese Sonderzeichen für Literalwerte in der Variablendeklaration wie das M für Dezimal in der folgenden Anweisung angeben:
var myDecimal = 14.5M;
Wenn es einen Unterschied macht, versuche ich, eine Webentwicklung mit C # durchzuführen.
c#
variables
data-types
Wassimanen
quelle
quelle
auto
.Antworten:
Über die Verwendung von var wurde viel gestritten. Meine allgemeinen Regeln sind die folgenden.
Grundsätzlich besteht das Ziel darin, das Lesen des Codes zu erleichtern. Wenn Sie der Meinung sind, dass var ausreicht, weil die Zuordnung offensichtlich ist, verwenden Sie var. Verwenden Sie den vollständigen Typnamen als Hinweis für den Leser, wenn Sie dies für erforderlich halten.
quelle
foreach
Anweisungen, bei denen es mir nur darum geht, eine Sammlung aufzuzählen, nicht unbedingt um den Typ jedes Elements.Wann zu verwenden
var
ist eine Programmierung "Holy War". Es gibt genau einen Ort, an dem dies erforderlich ist: Wenn das Ergebnis einer Operation einen anonymen Typ erstellt, wie z.An jedem anderen Ort ist es optional und Ihrem Kodierungsstandard entsprechend, es in den anderen Situationen zu verwenden oder nicht.
Und ja, Sie benötigen die Sonderzeichen für Literale, um den Compiler wissen zu lassen, was auf der rechten Seite steht. In Ihrem Beispiel ohne
M
ist der Standardwertdouble
eher alsdecimal
.quelle
Von MSDN :
Ich mag implizites Tippen wirklich, wirklich nicht. Oberflächlich betrachtet macht es den Code besser lesbar, kann aber später zu vielen Problemen führen. Wenn ein Entwickler einen Variableninitialisierer ändert, sagen wir von
zu
oder
Der Typ ändert sich und führt zu einer ganzen Reihe von Compilerfehlern oder, wenn es sich um eine Webansicht handelt und Sie den Postbuild-Schritt nicht zum Vorkompilieren Ihrer Ansichten verwenden, zu einer ganzen Reihe von Laufzeitfehlern, die nicht ohne Wirkung abgefangen werden Pre-Deployment-Tests.
Implizite Eingabe funktioniert auch nicht überall (über denselben MSDN-Link)
Es ist sehr, sehr gut, den Code konsistent zu halten (in diesem Fall überall explizite Eingabe). Meiner Meinung nach
var
ist faul und bietet keinen wirklichen Nutzen und führt noch einen weiteren potenziellen Fehlerpunkt in einem bereits komplexen Prozess ein.Update 2017
Ich habe meine Meinung komplett geändert. Wenn ich in C # arbeite, verwende ich die
var
meiste Zeit (mit Ausnahme von Variablen vom Typ Interface und dergleichen). Es hält den Code knapp, was die Lesbarkeit verbessert. Dennoch - achten Sie darauf, was der aufgelöste Typ wirklich ist.quelle
this.
wenn man nicht überall verwendet oderSystem.Blah.SomeType
anstelle von a sagtusing
, was ich immer noch unglaublich ärgerlich finde, ist knapperer Code - zumindest für mich - in der Regel einfacher visuell zu analysieren. Es gibt immer noch viele Szenarien, in denen explizite Eingabe die richtige Wahl ist. Aber heutzutage bin ich weniger ein Sprachanwalt als jemand, der nur versucht, sauberen Code aus der Tür zu bekommen.using namespace std;
in CPP-Dateien verwendet. (Keine Header, da ich es vorziehen würde, nicht geteert und gefiedert zu werden.)Die C # -Referenz zeigt Folgendes, um die gute oder schlechte Verwendung dieses Konstrukts zu veranschaulichen:
Das folgende Beispiel zeigt zwei Abfrageausdrücke. Im ersten Ausdruck ist die Verwendung von var zulässig, jedoch nicht erforderlich, da der Typ des Abfrageergebnisses explizit als IEnumerable angegeben werden kann. Im zweiten Ausdruck muss jedoch var verwendet werden, da das Ergebnis eine Auflistung anonymer Typen ist und der Name dieses Typs nur für den Compiler selbst zugänglich ist. Beachten Sie, dass in Beispiel 2 das Element der foreach-Iterationsvariablen ebenfalls implizit eingegeben werden muss.
quelle
Das Schlüsselwort var fordert den Compiler nur auf, den Typ der Variablen var type automatisch abzuleiten. Wenn Sie also eine Variable vom Typ Dezimal in einer Variablen var speichern möchten, müssen Sie das m verwenden. Wenn Sie eine Zeichenfolge speichern, müssen Sie diese ebenfalls in Anführungszeichen setzen.
quelle
Für mich benutze ich var nicht für die folgenden Fälle:
Fruit foo = new Apple();
. In diesem Fall ist var meiner Meinung nach zu vermeiden, und die Verwendung der Elternklasse (hier Fruit) ist besser, indem ein besseres Verständnis der Codelogik und der Begrenzung der wahrscheinlichen Fehler ermöglicht wird (bei var keine Überprüfung des polymorphen Konzepts!).Im Übrigen denke ich, dass es vom Fall und vom Hintergrund des Entwicklers abhängt. Einige Leute aus der PHP-Welt werden es vorziehen, sich nicht um die Variablentypen zu kümmern, und einige Leute aus der Java-Welt werden einfach denken, dass var eine Häresie ist und je ausführlicher es ist, desto besser ist es.
Sie müssen Ihre persönliche Meinung abgeben :)
quelle