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?

129
demandé sur Community 2011-02-02 01:04:12

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:

91
répondu Martin Buberl 2017-05-23 12:10:31

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 :)

31
répondu Jon Skeet 2011-02-01 22:07:21

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.

12
répondu Henk Holterman 2011-02-01 22:15:00

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));
11
répondu Alex Essilfie 2011-02-01 22:15:57