C# Language var


Exemple

Une variable locale implicitement typée qui est fortement typée comme si l'utilisateur avait déclaré le type. Contrairement aux autres déclarations de variables, le compilateur détermine le type de variable qu'il représente en fonction de la valeur qui lui est attribuée.

var i = 10; // implicitly typed, the compiler must determine what type of variable this is
int i = 10; // explicitly typed, the type of variable is explicitly stated to the compiler

// Note that these both represent the same type of variable (int) with the same value (10).

Contrairement aux autres types de variables, les définitions de variable avec ce mot-clé doivent être initialisées lors de la déclaration. Cela est dû au mot-clé var représentant une variable implicitement typée.

var i;
i = 10;

// This code will not run as it is not initialized upon declaration.

Le mot-clé var peut également être utilisé pour créer de nouveaux types de données à la volée. Ces nouveaux types de données sont connus sous le nom de types anonymes . Ils sont très utiles, car ils permettent à un utilisateur de définir un ensemble de propriétés sans avoir à déclarer explicitement un type d'objet en premier.

Type anonyme simple

var a = new { number = 1, text = "hi" };

Requête LINQ qui renvoie un type anonyme

public class Dog
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class DogWithBreed
{
    public Dog Dog { get; set; }
    public string BreedName  { get; set; }
}

public void GetDogsWithBreedNames()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
             join b in db.Breeds on d.BreedId equals b.BreedId
             select new 
                    {
                        DogName = d.Name,
                        BreedName = b.BreedName
                    };

    DoStuff(result);
}

Vous pouvez utiliser le mot-clé var dans l'instruction foreach

public bool hasItemInList(List<String> list, string stringToSearch)
{
    foreach(var item in list)
    {
        if( ( (string)item ).equals(stringToSearch) )
            return true;
    }

    return false;
}