Oui, ils sont différents. var supprime le type de données d'origine et une vérification de type de données, donc c'est plus dangereux.
Type-chèques
Une définition variable normale comprend un type de données-contrôle sur l'affectation initiale.
T a = init; // type-checked
a = b; // type-checked
a = c; // type-checked
Ce manque lorsque vous utilisez var
var a = init; // NOT type-checked
a = b; // type-checked
a = c; // type-checked
Ces tests de compilation sont la colle qui maintient ensemble les grands programmes. Les enlever est stupide.
accidentelle changements
Une définition variable normale a un type fixe - il ne peut pas être modifié accidentellement. Lorsque vous supprimez le type de données initial, vous permettez que le type de la variable soit modifié accidentellement. Toute modification apportée à l'expression initiale peut modifier le type de données de la variable.
var a = init(e); // datatype changes with init and e
Avec le temps, à mesure que le logiciel est édité, le type de données peut être accidentellement modifié.
Il pourrait déjà être arrivé, et vous ne pouvez pas le dire.
Exemple:
public double MaxValue = 1.2;
... meanwhile, in another source file ...
var x = MaxValue - 1;
var y = IsFull(x);
x et les types de données de y peuvent être accidentellement changer en éditant MaxValue.
Q. Est-ce déjà arrivé?
Résumé
L'utilisation var
tourne le type de données de la variable locale dans une partie mobile sans contrôle.
Plus les pièces mobiles d'une machine sont nombreuses, plus elle risque de se briser.
Les types de données explicites empêchent les bogues.
duplication possible de [Quel est le point du mot-clé var?] (Http://stackoverflow.com/questions/209199/whats-the-point-of-the-var-keyword) –
également une dupe de: http : //stackoverflow.com/questions/41479/use-of-var-keyword-in-c –