12 votes

L'utilisation du mot-clé var est-elle mauvaise en C# 2.0 ?

J'ai lu un article sur utiliser les fonctionnalités de C# 3 en C# 2 où vous pouvez par exemple taper var x = 2; et même si le projet est un projet 2.0, le compilateur Visual Studio 2008 le détecte et génère le même code que si vous tapez int x = 2 .

Mais ce que je ne comprends pas, c'est que tu devrais no le faire dans certains cas ? J'ai toujours pensé que le var n'est pas arrivé avant C# 3 . Si le compilateur génère le même code et que je peux taper du code C# 3 et du code C# 2 exactement de la même manière, quelle est la différence en réalité, car le CLI est le même, n'est-ce pas ?

Citation du lien ci-dessus

En coulisses, le compilateur génère du code .NET 2.0 normal.

Y a-t-il une différence entre le code .NET 2.0 et le code .NET 3 ?

25voto

Gorpik Points 7276

Je crains que vous ne confondiez les versions C# et les versions .NET.

Vous ne pouvez pas utiliser var en C# 2.0, le compilateur pensera qu'il s'agit simplement d'un identifiant. Mais vous pouvez l'utiliser en C# 3.0 en ciblant .NET 2.0, car var n'est qu'une construction du langage (C#), et non une construction .NET. Le compilateur .NET le traduira dans le type approprié dans le CIL généré, de sorte que le compilateur JIT ne le verra jamais et que tout ira bien.

Étant donné que le compilateur VS2008 est un compilateur C# 3.0, vous n'aurez aucun problème à utiliser le logiciel var quel que soit la version de .NET que vous ciblez.

7voto

Sam Holder Points 13935

Var est un sucre syntaxique dans le langage C#3 qu'utilise VS2008. Le code peut toujours être compilé pour être compatible avec .net 2.0. Le seul problème que vous devriez rencontrer est si vous devez éditer ces fichiers dans VS2005.

4voto

Ian Points 13892

En ce qui concerne son utilisation.

Ce n'est pas mauvais en ce qui concerne l'exécution, comme déjà mentionné, c'est juste un sucre syntaxique et il est remplacé au moment de la compilation.

Pour le codage, je pense que son utilisation est mixte. Par exemple :

Je pense que c'est bon. C'est facile de voir ce qu'est la valeur.

var a = "test"; 

Pas tout à fait aussi bien, de nombreuses personnes doivent faire défiler l'IDE pour comprendre le code, ce qui est pénible.

var b = SomeReallyLongNameSpace.SubNamespace.Namespace.Class.Enum.Value1; 

C'est bien, vous savez quel est le résultat parce que la méthode est clairement définie.

var c = GetString(); 

Vous n'avez aucune idée au premier coup d'œil de ce qui est renvoyé, ce n'est pas utile et il serait préférable de le définir plutôt que d'utiliser le mot-clé var.

var d = GetSomething();

1voto

Andrey Points 36869

A propos de var : c'est un pur sucre syntaxique et une astuce de compilateur. En tapant var, vous demandez au compilateur de deviner le type en fonction du côté droit de l'expression. cela peut être facilement fait en compilant en .net 2.0. Linq pourrait ne pas fonctionner car il utilise des assemblages de .net 3.5.

-2voto

this. __curious_geek Points 23728

Var a été introduit pour contenir les instances des types anonymes en C# 3.0.

Dans .net2.0, il se peut que le compilateur de VS2008 ou de C# le remplace par le type réel qui est déjà connu au moment de la conception et si vous connaissez déjà le type pendant le codage, pourquoi utiliser var !)

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