Dlaczego powinienem używać var zamiast typu? [duplikat]
Możliwy duplikat:
ReSharper i var
Po zainstalowaniu ReSharper wymaga (poprzez ostrzeżenia), aby używać var w miarę możliwości, na przykład
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper chce przekształcić go w
var ue = (UnhandledExceptionEventArgs) t;
Pierwsza wersja mi się bardziej podoba, czy jest jakiś powód, aby preferować var ? lepsza wydajność? cokolwiek? czy to tylko styl kodu?
4 answers
To tak naprawdę tylko styl kodowania. Kompilator generuje dokładnie to samo dla obu wariantów.
Zobacz także tutaj Pytanie o wydajność:
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 12:10:31
Kiedy mówisz "przez ostrzeżenia" co dokładnie masz na myśli? Zwykle widziałem, że daje to wskazówkę, że może chcesz użyć var, ale nic tak ostrego jak Ostrzeżenie.
Nie ma różnicy w wydajności var - kod jest kompilowany do tego samego IL. Potencjalną korzyścią jest czytelność-jeśli już uczyniłeś typ zmiennej krystalicznie czystym na RHS przypisania (np. poprzez wywołanie cast lub konstruktora), gdzie jest korzyść z posiadania jej również na LHS? To jest osobiste preferencje.
Jeśli nie chcesz, aby R# sugerowało użycie var, po prostu zmień opcje. Jedna rzecz o ReSharper: to jest Bardzo konfigurowalne:)
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-02-01 22:07:21
W w tym przypadku jest to po prostu styl kodowania.
Użycie var
jest konieczne tylko w przypadku typów anonimowych.
W innych sytuacjach to kwestia gustu.
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-02-01 22:15:00
Jak powiedzieli inni, nie ma różnicy w skompilowanym kodzie (IL), gdy używasz jednego z poniższych:
var x1 = new object();
object x2 = new object;
Przypuszczam, że Resharper ostrzega, ponieważ [moim zdaniem] łatwiej jest przeczytać pierwszy przykład niż drugi. Poza tym, po co powtarzać nazwę typu dwa razy?
Rozważ następujące rzeczy, a zrozumiesz, co mam na myśli:
KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
Jest o wiele łatwiej to przeczytać:
var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));
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-02-01 22:15:57