Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Warum sollte var eine schlechte Sache sein?                                      17 Antworten                          
  •     
    

Ich habe gerade eine Testversion von ReSharper und eines der ersten Dinge, die ich bemerkt, dass es explizit typisierte lokale Variablen mit implizit typisierte diejenigen, zB immer zu ersetzen schlägt vor:

public string SomeMethod(int aParam)
{
    int aNumber = SomeOtherMethod(aParam);
    // should be changed to:
    var aNumber = SomeOtherMethod(aParam);
}

Ich denke, explizit typisierte Variablen besser lesbar ist (explizite).

Was denken Sie über ReSharper Vorschlag? Gibt es einen Vorteil in implizit typisierte Variablen? Wann Sie implizit / explict Vars verwenden?

War es hilfreich?

Lösung

ich persönlich nur „var“ verwenden, wenn ich klar den Variablentyp unterscheiden kann nur durch die Erklärung zu lesen, zum Beispiel:

var someVariable = new List<int>();

In dem obigen Beispiel seiner offensichtlich, dass „var“ bezieht sich auf „List “.

Ich mag verwenden Sie nicht „var“, wenn ich zu einem gewissen Methodendefinition gehen, was Variablentyp, um herauszufinden, „var“ repräsentiert oder durch auf Visual Studio intelli-Popup verlassen zu müssen oder was auch immer das genannt wird, für Beispiel dies nicht ok zu mir:

var someVaraible = SomeMethod();

Ich meine, was ist die „Somemethod“ soll Funktion zurückzukehren? Können Sie sich einfach durch einen Blick auf die Codezeile sagen? Nein, Sie können nicht, so deshalb habe ich mit „var“ auf diese Situationen zu vermeiden.

Andere Tipps

Es gibt viele Diskussionen darüber, aber ich denke, es kommt alles auf persönlichen Geschmack, genau wie mit dem ‚this‘ Schlüsselwort fast überall.

I persönlich bevorzugen explictly Variablen eingegeben hat, aber wenn verschachtelte generische Sammlungen Dinge verwenden, kann besser lesbar wird ein implizit typisierte Variablen. Schauen Sie sich:

Dictionary<string, Dictionary<string, string>> myDictionary = new Dictionary<string, Dictionary<string, string>>();

vs:

var myDictionary = new Dictionary<string, Dictionary<string, string>>();

EDIT: das SO Thema behandelt das gleiche Thema, mit einigen netten Antworten:

Für den Fall, einige haben noch nicht bemerkt haben, können Sie einfach die „Vorschläge“ ändern in Reshaper (Reshaper -> Optionen -> Sprachen -> Kontext Aktionen -> „Ersetzen Sie explizite Typangabe mit‚var‘“).

ich persönlich lieber überall explizite Typ Spezifikationen haben, aber ich bin nicht zu pingelig, was es.

Es ist nur einfacher, das var pseudo-Schlüsselwort zu Zeiten als ein riesiges Typname zu geben, vor allem, wenn ein generischen beteiligt sein könnte. Sie sollten jedoch wissen, dass sie funktional identisch sind. Es gibt keinen Unterschied in der Leistung oder etwas so oder so. Der Compiler leitet den Typ der rechten Seite der Zuweisung und ersetzt var mit diesem Typ. Es passiert nicht zur Laufzeit wie eine VB-Variante.

FWIW, ist das Schlüsselwort var in vielen Fällen deutlich lesbar. Vor allem, wenn ...

  1. Die rechte Seite der Zuweisung ist ein Konstruktor Ausdruck.

    var map = new Dictionary> ();

  2. Lokale Variablen haben gute Namen.

HTH

scroll top