Dlaczego ReSharper chce używać' var ' do wszystkiego?

Właśnie zacząłem używać ReSharper z Visual Studio (po wielu zaleceniach NA SO). Aby go wypróbować otworzyłem niedawno ASP.NET projekt MVC. Jedną z pierwszych i najczęstszych rzeczy, które zauważyłem, jest zmiana większości / wszystkich moich wyraźnych deklaracji na var. Na przykład:

//From This:
MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);
//To This:
var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

I tak dalej, nawet z prostymi typami, takimi jak int, bool, itd.

Dlaczego jest to zalecane? Nie pochodzę z informatyki ani środowiska. NET, po" wpadłem " w rozwój. NET niedawno, więc naprawdę chciałbym zrozumieć, co się dzieje i czy jest to korzystne, czy nie.

Author: MasterMastic, 2009-12-09

23 answers

Jednym z powodów jest lepsza czytelność. Co jest lepsze?

Dictionary<int, MyLongNamedObject> dictionary = new Dictionary<int, MyLongNamedObject>();

Lub

var dictionary = new Dictionary<int, MyLongNamedObject>();
 193
Author: Mark Sherretta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 13:26:32

ReSharper sugeruje wyraźnie nadużywanie słowa kluczowego var. Można go używać tam, gdzie typ jest oczywisty:

var obj = new SomeObject();

Jeśli Typ nie jest oczywisty, powinieneś raczej napisać:

SomeObject obj = DB.SomeClass.GetObject(42);
 291
Author: Guffa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 13:29:59

Ja osobiście wolę wyłączyć tę sugestię. Użycie var może często poprawić czytelność; ale jak już wspomniałeś, czasami ją zmniejsza(z typami prostymi lub gdy typem wynikowym jest obscure ).

Wolę wybierać, kiedy używam var, a kiedy nie. ale znowu, to tylko ja.

 101
Author: Bryan Menard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 13:28:30

var może zwiększyć czytelność kodu, jednocześnie zmniejszając natychmiastowe zrozumienie kodu. Tak samo, może zmniejszyć czytelność kodu w innych sytuacjach. Czasami jego użycie jest neutralne. Miara czytelności do zrozumienia nie jest proporcjonalna, ale zależy od sytuacji. Czasami oba są zwiększone lub zmniejszone razem.

Czynnikiem jest to, co var jest stosowane do i jak dobrze cel obsługuje natychmiastowe zaciemnienie swojego typu danych do czytnika, lub jeśli informacje o jego typie są potrzebne, aby zrozumieć część programu pod ręką.

Na przykład złe nazewnictwo może prowadzić do var, powodując zmniejszenie zrozumienia kodu. Nie jest to jednak wina var:

var value1 = GetNotObviousValue(); //What's the data type? 
//vs. 
var value2 = Math.Abs(-3); // Obviously a numeric data type. 

Czasami nie ma sensu używać var dla prostych typów danych, gdy kod jest bardziej czytelny przy jego braku:

var num = GetNumber(); // But what type of number?
// vs. 
double num = GetNumber(); // I see, it's a double type. 

Czasami var może być przydatne do ukrycia informacji typu danych, które niekoniecznie dbają o szczegóły:

    IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>> q = from t in d where t.Key == null select t; // OMG! 
    //vs. 
    var q = from t in d where t.Key == null select t;

    // I simply want the first string, so the last version seems fine.  
    q.First().Key; 

You must use var when there 's anonymous type present because there' s no type name to call it by:

var o = new { Num=3, Name="" };

Gdy masz Visual Studio Intellisense dostarczające informacje o typie pomimo var, musisz wtedy mniej polegać na swoim zrozumieniu poprzez ścisłe czytanie kodu bez pomocy. Prawdopodobnie mądrze jest założyć, że nie każdy może mieć lub używać Intellisense.

Podsumowując, bazując na powyższych przykładach, proponuję stosowanie var nie jest dobrym pomysłem, ponieważ większość rzeczy najlepiej robić z umiarem i w oparciu o okoliczności pod ręką, jak pokazano tutaj.

Dlaczego Resharper używa go domyślnie? Sugerowałbym dla ułatwienia, ponieważ nie może analizować niuansów sytuacji, aby zdecydować, kiedy najlepiej go nie używać.

 69
Author: John K,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-13 02:52:11

W ReSharper (8.02, ale prawdopodobnie inne wersje), opcja sugestii "Use implicite typed local variable declaration" może być dostosowana do Twoich preferencji , cokolwiek by to nie było, najpierw otwierając menu opcji dla ReSharper:

Menu Opcji ReSharper

Następnie, w "kontrola kodu", dostosowując "dotkliwość kontroli" wybranego języka, w moim przypadku c#:

Wyłącz domyślnie wpisaną sugestię zmiennej lokalnej

Jak widać, istnieją opcje, aby dostosować wszystkie sugestie, które ReSharper sprawia. Mam nadzieję, że pomoże to komuś takiemu jak ja, kto ma już strategię użycia " var " i chce tylko, aby ReSharper ją uszanował:)

 42
Author: Erikest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-30 02:08:16

'var' jest o byciu jasnym

Główna debata o tym, czy używać słowa kluczowego var, czy nie, dotyczy tego, jak czytelny jest kod dla Ciebie i innych programistów.

Tak, jakbyś pisał historię, nie ma ostatecznej właściwej odpowiedzi. Ale spójrzmy na kilka przykładów tego w prostym języku angielskim.

Jake przywitał się z Billem. Nie lubił go, więc odwrócił się i poszedł w drugą stronę.
Kto poszedł w drugą stronę? Jake czy Bill? W tym case używanie nazw "Jake" i "Bill" jest jak używanie nazwy typu. A "on" i " on " to jak użycie słowa kluczowego var. W tym przypadku może być bardziej szczegółowe. Poniższy przykład jest znacznie jaśniejszy.
Jake przywitał się z Billem. Jake nie lubił Billa, więc odwrócił się i poszedł w drugą stronę.

W tym przypadku bardziej szczegółowe uczyniły zdanie jaśniejszym. Ale nie zawsze tak będzie. W niektórych przypadkach specyfika utrudnia Czytaj.

Bill lubi książki, więc poszedł do biblioteki i wyjął książkę, którą Bill zawsze lubił.

W tym przypadku łatwiej byłoby odczytać zdanie, gdybyśmy użyli "on", a w niektórych przypadkach pominęli jego imię razem, co jest odpowiednikiem słowa kluczowego var.

Bill lubi książki, więc poszedł do biblioteki i wyjął książkę, którą zawsze lubił.

Te przykłady obejmują gist, ale nie opowiedz całą historię. W tych przykładach był tylko jeden sposób odniesienia się do osoby. Albo używając ich nazwy, albo używając bardziej ogólnych określeń, takich jak" on " i "on".

W przypadku kodu mamy 3 sposoby na dodanie jasności. Typ, nazwa zmiennej i przypisanie. Weźmy ten wiersz kodu na przykład:

Person p = GetPerson();

Teraz pojawia się pytanie, czy jest wystarczająco dużo informacji w tej linii kodu, aby pomóc ci dowiedzieć się, co się dzieje?

A co z następującymi linia kodu? Czy nadal wiesz, co p oznacza w tym przypadku:

var p = GetPerson();

A może teraz:

var p = Get();

Lub teraz:

var person = Get();

Lub ten:

var t = GetPerson();

Lub to:

var u = Person.Get();

To, czy słowo kluczowe var działa w danym scenariuszu, zależy w dużej mierze od kontekstu kodu, na przykład od tego, jak zmienne, klasy i metody są nazwane. Zależy to również od złożoności kodu i reszty otaczającego go kodu.

Osobiście lubię używać var słowo kluczowe jest bardziej wyczerpujące dla mnie przez większość czasu. Ale mam również tendencję do nazywania moich zmiennych po typie, więc tak naprawdę nie tracę żadnych informacji.

To powiedziaĹ 'o czasami w zaleĹźnoĹ" ci od kontekstu czyniÄ ™ wyjÄ ... tki, taka jest natura czegokolwiek skomplikowanego, a oprogramowanie jest niczym, jeĹ " li nie jest skomplikowane.

 25
Author: Luis Perez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-24 23:07:50

Dziwię się, że nikt nie wspomniał, że łatwiej jest również zmienić typ obiektu instancyjnego, ponieważ

AVeryLongTypeName myVariable = new AVeryLongTypeName( arguments );

Jest formą powtórzenia . Jeśli chcę zmienić AVeryLongTypeName na jedną z jej pochodnych klas, muszę zmienić to tylko raz podczas używania var i nadal mogę uzyskać dostęp do metod klas podrzędnych.

Poza tym, poprawiona czytelność jest ważnym punktem, ale jak mówili inni, var nie powinien być nadużywany, więc myślę, że wyłączenie podpowiedzi w Resharper jest absolutnie ok.

 24
Author: Philipp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-11 06:24:10

To też mi się nie podobało.

Nie chcę, aby to przerodziło się w debatę na temat użycia var, ma swoje zastosowania, ale nie powinno być używane wszędzie.

Kluczową rzeczą do zapamiętania jest to, że ReSharper jest skonfigurowany do dowolnych standardów kodowania, które chcesz.

Edit: ReSharper i var

 18
Author: LiamB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:26

Widzę wiele poprawnych odpowiedzi, ale brakuje pełnej.

To prawda, że ReSharper wykorzystuje Domyślnie var. Myślę, że większość ludzi się z tym zgodzi. Jest również łatwiejsze do odczytania, gdy var jest używany, a typ jest oczywisty, na przykład gdy używasz instrukcji new. Widziałem jeden post, który pokazał, jak zaktualizować wagę inspekcji, aby pokazać tylko wskazówki dotyczące korzystania z var.

Próbowałem najpierw skomentować inne posty, aby dodać gdzie je ustawić, ale nie miałem reputacji dla to. Najwyraźniej nie miałem również reputacji, aby opublikować mój zrzut ekranu z ustawieniami.

Wyjaśnię, jak się tam dostać.

W Visual Studio > Menu główne > Resharper > opcje > Edycja kodu > C# > Styl kodu > użycie Var w deklaracjach

  • dla typów wbudowanych użyj typu jawnego
  • dla typów prostych użyj 'var', gdy widoczne
  • gdzie indziej użyj ' Var '

Tutaj wpisz opis obrazka

ReSharper help documentation: Code Styl składni: niejawne / jawne pisanie (słowo kluczowe 'var' ) - Konfiguracja preferencji użycia słowa kluczowego ' var '

 15
Author: Nathan Kovac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 00:13:59

Moja zasada jest taka:

  • Czy deklarujesz prymitywny Typ (tzn. byte, char, string, int[], double?, decimal, itd.)? - >Użyj typu:

    string myStr = "foo";
    int[] myIntArray = [123, 456, 789];
    double? myDouble = 123.3;
    
  • Czy deklarujesz typ złożony (tj. List<T>, Dictionary<T, T>, MyObj)? - >Użyj var:

    var myList = List<string>();
    var myDictionary = Dictionary<string, string>();
    var myObjInstance = new MyObj();
    
 13
Author: Sumner Evans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-05 18:06:26

Chciałbym tylko zaznaczyć, że użycie "var" jest zalecane w konwencji kodowania C #

Gdy typ zmiennej jest oczywisty z prawej strony przypisania, lub gdy dokładny typ nie jest ważny

Więc prawdopodobnie dlatego wskazówka jest domyślnie włączona w ReSharper. Zawierają one również niektóre przypadki, w których nie poprawiłoby to czytelności bezpośrednio poniżej w tym samym dokumencie.

 12
Author: jose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 00:17:58

ReSharper zaleca var, ponieważ ma tendencję do odblokowywania tworzenia obiektów.

Porównaj te dwa przykłady:

StringBuilder bld = new StringBuilder();

var bld = new StringBuilder();
To tylko skrót, który powinien być łatwiejszy do odczytania.

Myślę, że jest w porządku, gdy tworzysz nowe obiekty jawnie za pomocą "new". Jednak w twoim przykładzie może nie być oczywiste, jeśli klasy nie zostały nazwane poprawnie.

 6
Author: Paul Sasik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 00:20:47

BTW, ReSharper rysuje rozróżnienie między "możesz zastosować tę sugestię do swojego kodu" i " twój kod jest zepsuty, chcesz, żebym to naprawił?'. Słowo kluczowe var znajduje się w kategorii sugestia, wraz z takimi rzeczami jak "Odwróć, Jeśli aby zmniejszyć zagnieżdżanie"; nie musisz go śledzić.

Możesz skonfigurować, jak irytujące są wszystkie alerty w oknie dialogowym Opcje lub bezpośrednio w menu podręcznym dla tego alertu. Można obniżyć takie rzeczy jak sugestia var, żeby były mniej widoczne, lub można uaktualnić rzeczy ,takie jak alert "użyj metody rozszerzenia", aby wyświetlał się jako rzeczywisty błąd.

 6
Author: Tim Robinson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 00:21:53

var funkcja.NET 3.0 jest po prostu wnioskowanie typu , które jest bezpieczne dla typu i często sprawia, że kod jest łatwiejszy do odczytania. Ale nie musisz i możesz wyłączyć tę rekomendację w ReSharper, jeśli chcesz.

 5
Author: Klaus Byskov Pedersen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-15 01:19:16

Var jest niesamowity! Natknąłem się na wielu programistów, którzy mają wrażenie, że var jest związany z typem dynamicznym, nie jest. Wciąż jest statycznie pisany, tylko o tym decyduje kompilator.

Oto kilka niesamowitych zalet używania var

Mniej typowania var jest krótszy i łatwiejszy do odczytania, na przykład

Dictionary<int,IList<string>> postcodes = new Dictionary<int,IList<string>>() Yuk.

var postcodes = new Dictionary<int,IList<string>>() \o / \o/

bardziej opisowe nazwy zmiennych - wątpliwe, ale myślę, że ważne jest, aby pozwolić fluid nature of var shine here. Ponieważ var jest nieco niejasne, to naprawdę zachęca do bardziej descyptywnej nazwy zmiennej, zamiast pozwalać typowi mówić sam za siebie.

Less code changes - jeśli zmieni się Typ zwracanego wywołania metody. Musisz tylko zmienić wywołanie metody, Nie w każdym miejscu, w którym jest używana.

typy anonimowe - typy anonimowe są naprawdę potężnym pojęciem, szczególnie w obszarach takich jak zasoby częściowe WebApi . Bez var nie mogą być używane.

Czasami jednak warto jasno deklarować typy i uważam to za najbardziej przydatne w prymitywach lub strukturach. Na przykład, osobiście nie uważam tej składni za bardzo przydatną:

for(var i = 0; i < 10; i++) 
{

}

Vs

for(int i = 0; i < 10; i++) 
{

}

Wszystko zależy od osobistych preferencji, ale używanie var naprawdę przyspieszy twój rozwój i odblokuje cały świat anonimowych dobroci typu.

 4
Author: KnowHoper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-09 05:03:13

Moim zdaniem, var powinno być używane tylko wtedy, gdy jest od razu jasne, jaki jest typ przy definiowaniu wartości zmiennej.

Przykład:

var s = "string value";

Jest oczywiste, że s jest string.

Uważam, że jest to również właściwe, gdy nazwa typu zmiennej jest bardzo złożona.

Przykład:

Dictionary<SomeCustomKeyType, Dictionary<AnotherCustomKeyType, List<int>>> dict = new Dictionary<SomeCustomKeyType, Dictionary<AnotherCustomKeyType, List<int>>>();

// This is a little easier to read than the above statement
var dict = new Dictionary<SomeCustomKeyType, Dictionary<AnotherCustomKeyType, List<int>>>();

Poza tymi scenariuszami, nie widzę żadnych korzyści, które można osiągnąć używając var, ale mogę wymyślić kilka scenariuszy, w których może to być

Na przykład Typ jednorazowy, którego wartość zmiennej po prawej stronie nie pokazuje jednoznacznie typu. Pozbycie się IDisposable można łatwo zapomnieć o

Przykład:

// returns some file writer
var wr = GetWriter();

wr.add("stuff");
wr.add("more stuff");

//...
//...

// Now `wr` needs to be disposed, 
// but there is no clear indication of the type of `wr`,
// so it will be easily overlooked by code writer and code reviewer.
 3
Author: James Wierzba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 17:18:57

Nie ma żadnej różnicy technicznej, jeśli używasz var, typ jest sugerowany przez kompilator. Jeśli masz taki kod:

var x = 1;

X jest implikowane jako int i żadne inne wartości nie mogą być przypisane do niego.

Słowo kluczowe var jest przydatne, jeśli zmienisz typ zmiennej; wtedy musisz dokonać tylko jednej zmiany zamiast dwóch:

var x = 1; --> var x = "hello";
int x = 1; --> string x = "hello";
 2
Author: eWolf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 13:27:27

Słowo kluczowe var zostało wprowadzone w C # 3.0-pozwala nam zapomnieć o jawnym określeniu naszego typu.

Nie ma żadnej różnicy, czy używasz

MyObject foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

Lub

var foo = DB.MyObjects.SingleOrDefault(w => w.Id == 1);

Poza czystą czytelnością i mniejszą szansą na błąd.

Wydaje się to banalnym przykładem, ale powiedzmy, że następujące słowa mogą pomóc w zrozumieniu:

var myInt = 23;

Zwraca typ int, natomiast

var myInt = "23";

Zwraca typ string.

MSDN numer referencyjny

 2
Author: Daniel May,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 13:32:17

Podanie jawnego typu obiektu jest w jakiś sposób zbędne. Nawet przetłumaczone na język angielski, brzmi to zbędnie: "umieść obiekt typu X w zmiennej typu X" vs "umieść obiekt typu X w zmiennej".

Jednakże użycie ' var ' ma swoje ograniczenia . Zapobiega poniższemu użyciu polimorfizmu , który jest czystym pięknem :

Załóżmy, że pies rozszerza Zwierzę; Kot rozszerza hierarchię klas zwierząt:

Animal x = new Dog();
DoStuffWithDog(x as Dog);

x = new Cat();
DoStuffWithCat(x as Cat);

void DoStuffWithDog(Dog d){}
void DoStuffWithCat(Cat c){}

Ten sam kod, z X zadeklarowanym przez 'var' nie skompiluje.

var x = new Dog(); // from this point, x is a Dog
DoStuffWithDog(x as Dog);

x = new Cat(); // cannot assign a Cat instance to a Dog
DoStuffWithCat(x as Cat);

void DoStuffWithDog(Dog d){}
void DoStuffWithCat(Cat c){}

W każdym razie, wracając do pierwotnego pytania, nie używam Resharper, ale zakładam, że to jest wystarczająco inteligentne, aby wykryć, kiedy nie używać 'var'. :-)

 2
Author: xtrem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-27 06:57:27

'var' dodaje do kodu rodzaj "dynamicznego" elementu (chociaż kod pozostaje oczywiście ściśle wpisany). Radzę nie używać go w przypadkach, gdy Typ nie jest jasny. Rozważ ten przykład:

var bar = GetTheObjectFromDatabase();
bar.DoSomething();

ClassA {
  void DoSomething() {
  //does something
  }
}

ClassB {
  void DoSomething() {
  //does something entirely different
  }
}

Jeśli zwracany typ GetTheObjectFromDatabase () zostanie zmieniony z Typu A na B, nie zauważymy, ponieważ obie klasy implementują DoSomething (). Kod może jednak teraz zrobić coś zupełnie innego.

To może być tak subtelne, jak pisanie różnych rzeczy do dziennika, więc możesz nie zauważyć, że jest za późno.

Następujące użycie var powinno być zawsze w porządku:

var abc = new Something();
 1
Author: lolaldanee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-16 11:47:59

Dla tych, którzy nie lubią ciągłego używania "var", możesz również powstrzymać ReSharper przed domyślnym ustawieniem var podczas "introduce variable". To było coś, co frustrowało mnie przez długi czas, zawsze było domyślne dla var, a ja zmieniałem go za każdym razem.

Te ustawienia znajdują się w sekcji Edycja kodu > C# > Styl kodu

Tutaj wpisz opis obrazka

 1
Author: Derek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 00:25:18

Nie ma żadnej różnicy technicznej(jak zauważył eWolf). Możesz użyć jednego lub drugiego, wygenerowany kod CLR będzie wyglądał tak samo.

Moim zdaniem główną korzyścią jest to, że zmusza to do używania lepszego nazewnictwa zmiennych. W twoim przykładzie 'foo' jest dość słabym wyborem dla nazwy zmiennej.

 0
Author: Jaco Pretorius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-09 13:36:25

Według JetBrains (autora ReSharper), domyślnie zachęcają do używania var.

Z ich strony internetowej :

Używanie domyślnych zmiennych lokalnych (znanych również jako słowo kluczowe var) wprowadzone w C# 3.0 stało się dość popularne, ponieważ poprawia czytelność w wielu scenariuszach. Domyślnie ReSharper zachęca również do używania słowa kluczowego var, ale Preferencje jego użycia są elastycznie konfigurowalne - na przykład możesz zdecydować się na użycie jawnych typów w konkretnych przypadkach lub wszędzie i ReSharper pomoże Ci wyegzekwować swoje preferencje.

 0
Author: Jeff Reddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-17 00:27:57