Les restrictions suivantes s'appliquent aux déclarations de variable implicitement typées :
var peut être utilisé uniquement lorsqu'une variable locale est déclarée et initialisée dans la même instruction ; la variable ne peut pas être initialisée à la valeur Null, ni à un groupe de méthodes ou une fonction anonyme.
var ne peut pas être utilisé sur les champs à la portée de classe.
Les variables déclarées en utilisant var ne peuvent pas être utilisées dans l'expression d'initialisation. En d'autres termes, l'expression suivante est légale : int i = (i = 20), mais l'expression suivante génère une erreur de compilation : var i = (i = 20);
Plusieurs variables implicitement typées ne peuvent pas être initialisées dans la même instruction.
Si un type nommé var est dans la portée, le mot clé var sera résolu à ce nom de type et ne sera pas traité comme faisant partie d'une déclaration de variable locale implicitement typée.
var peut également s'avérer utile avec les expressions de requête dans lesquelles le type construit exact de la variable de requête est difficile à déterminer. Cela peut se produire avec les opérations de regroupement et de classement.
Le mot clé var peut également être utile lorsque le type spécifique de la variable est fastidieux à taper au clavier, qu'il est évident ou qu'il n'augmente pas la lisibilité du code. Les types génériques imbriqués comme ceux utilisés avec les opérations de groupe sont un exemple où var est utile de cette manière. Dans la requête suivante, le type de la variable de requête est IEnumerable<IGrouping<string, Student>>. Tant que vous et ceux qui doivent conserver votre code comprenez ceci, l'utilisation des types implicites pour des raisons de commodité et de concision ne pose aucun problème.
// Same as previous example except we use the entire last name as a key.
// Query variable is an IEnumerable<IGrouping<string, Student>>
var studentQuery3 =
from student in students
group student by student.Last;
Toutefois, l'utilisation de var présente au moins l'éventualité que votre code soit plus difficile à comprendre pour d'autres développeurs. Pour cette raison, la documentation C# utilise généralement var uniquement lorsqu'il est requis.