177 votes

Pourquoi utiliser var au lieu de type ?

Duplicata possible :
ReSharper et var

Une fois que j'ai installé ReSharper, il me demande (par des avertissements) d'utiliser var chaque fois que possible, par exemple

UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;

ReSharper veut le transformer en

var ue = (UnhandledExceptionEventArgs) t;

Je préfère la première version, y a-t-il une raison de préférer la seconde ? var ? de meilleures performances ? quelque chose ? ou est-ce juste un style de code ?

120voto

Martin Buberl Points 14573

Il s'agit en fait d'un style de codage. Le compilateur génère exactement la même chose pour les deux variantes.

Voir aussi ici pour la question de la performance :

39voto

Jon Skeet Points 692016

Lorsque vous dites "par des avertissements", que voulez-vous dire exactement ? J'ai généralement vu cela comme une indication que vous peut Les autorités compétentes peuvent utiliser var, mais rien d'aussi sévère qu'un avertissement.

Il n'y a pas de différence de performance avec var - le code est compilé dans le même IL. L'avantage potentiel réside dans la lisibilité - si vous avez déjà rendu le type de la variable parfaitement clair dans la partie RHS de l'affectation (par exemple, via un cast ou un appel de constructeur), quel est l'avantage de l'avoir également dans la partie LHS ? Il s'agit toutefois d'une préférence personnelle.

Si vous ne voulez pas que R# suggère l'utilisation de var, changez simplement les options. Une chose à propos de ReSharper : il est très configurable :)

19voto

Alex Essilfie Points 5066

Comme les autres l'ont dit, il n'y a pas de différence dans le code compilé (IL) lorsque vous utilisez l'un ou l'autre des éléments suivants :

var x1 = new object();
object x2 = new object;

Je suppose que Resharper vous avertit parce qu'il est [à mon avis] plus facile de lire le premier exemple que le second. D'ailleurs, pourquoi répéter deux fois le nom du type ?

Considérez les éléments suivants et vous comprendrez ce que je veux dire :

KeyValuePair<string, KeyValuePair<string, int>> y1 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));

Il est beaucoup plus facile de lire ceci :

var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));

15voto

Henk Holterman Points 153608

En ce cas il s'agit simplement d'un style de codage.

Utilisation de var n'est nécessaire que lorsqu'il s'agit de types anonymes.
Dans d'autres situations, c'est une question de goût.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X