Pourquoi devrais-je utiliser var au lieu d'un type? [dupliquer]
possible Duplicate:
ReSharper et var
après que j'ai installé ReSharper il exige (par des avertissements) que j'utilise var chaque fois que possible, par exemple
UnhandledExceptionEventArgs ue = (UnhandledExceptionEventArgs) t;
ReSharper veut le transformer en
var ue = (UnhandledExceptionEventArgs) t;
j'aime bien la première version de la meilleure, il n'existe aucune raison de préférer var ? de meilleures performances? quoi que ce soit? ou est-ce juste un style de code?
4 réponses
c'est juste un style de codage. Le compilateur génère exactement le même pour les deux variantes.
Voir aussi ici pour la question de performance:
quand vous dites "par avertissements" que voulez-vous dire exactement? Je l'ai généralement vu donnant un indice que vous mai veulent utiliser var, mais rien d'aussi sévère qu'un avertissement.
il n'y a pas de différence de performances avec var - le code est compilé sur le même IL. L'avantage potentiel est dans la lisibilité - si vous avez déjà fait le type de la variable cristal clair sur le RHS de la cession (par exemple via un cast ou un appel de constructeur), où est l'avantage de aussi l'avoir sur le LHS? C'est une question de préférence personnelle.
si vous ne voulez pas de R# suggérant l'utilisation de var, il suffit de changer les options. Une chose à propos de ReSharper: c'est très configurable :)
Dans cette affaire c'est juste le style de codage.
L'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.
comme les autres l'ont dit, il n'y a pas de différence dans le code compilé (IL) lorsque vous utilisez l'un 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. En plus, Pourquoi répéter le nom du type deux fois?
considérez ce qui suit 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 à la place:
var y2 = new KeyValuePair<string, KeyValuePair<string, int>>("key", new KeyValuePair<string, int>("subkey", 5));