This article has been localized into Czech by the community.
Implicitně typované proměnné (klíčové slovo var)
Od verze C# 3.0 můžete použít klíčové slovo var na levé straně deklarace proměnné, místo explicitního deklarování typu proměnné. To je možné pouze uvnitř metody - ne na úrovni třídy, kde musíte vždy specifikovat typ. Podívejme se, jak to vypadá, když použijete klíčové slovo var:
int age = 42; // Explicitly typed variable
var name = "John Doe"; // Implicitly typed variable
Dvě proměnné - jedna je deklarována s typem int, zatímco druhá je deklarována klíčovým slovem var, místo specifikování jako řetězec. Všimněte si, že v obou případech přiřazuji hodnotu, protože i když to není požadováno při deklaraci typu, při použití klíčového slova var to vyžadováno je. Důvodem je, že kompilátor C# odvodí typ z pravé části příkazu - jednoduše se podívá, co se snažíte přiřadit k proměnné během kompilace, a pak změní klíčové slovo var na odpovídající typ.
To také znamená, že při používání klíčového slova var není žádné dodatečné zatížení - během běhu programu je to stejně rychlé jako explicitně deklarovaná proměnná, protože to je v podstatě to, co to je, když .NET framework spouští váš kód.
Náš první příklad je velmi triviální - není zde mnoho času ušetřeno psaním "var" místo "string". Nicméně, někdy budete deklarovat mnohem složitější typy, ať už jako novou proměnnou nebo jako lokální výsledek z funkce (uživatelem definované nebo z frameworku). V příkladu jako je tento je šance ušetřit slušné množství úhozů do klávesnice:
Dictionary<int, List<string>> dict1 = new Dictionary<int, List<string>>();
var dict2 = new Dictionary<int, List<string>>();
Výsledek bude přesně stejný, ale ve druhém případě určitě ušetříte nějaké úhozy do klávesnice, a protože v obou případech specifikujete typ na pravé straně, při použití klíčového slova var v příkladu, jako je tento, prakticky nedochází ke ztrátě čitelnosti vašeho kódu.
Klíčové slovo var můžete také použít při deklaraci lokální proměnné jako výsledku volání metody:
var s = DateTime.Now.ToString();
Opět je to rychlejší a je stále docela jasné, co se děje a jaký typ bude proměnná obsahovat (řetězec). To však nemusí být případ jako tento:
var myVar = SomeMethodWithANameWhichDoesntIndicateTheReturnType();
V situaci, jako je tato, vůbec není jasné, co proměnná bude obsahovat, a můžete obětovat čitelnost svého kódu. Zde byste měli zvážit použití explicitně typované proměnné.
Klíčové slovo var a anonymní typy
Doposud byly příklady, které jsme viděli s klíčovým slovem var, většinou z oddělení "syntaktického cukru" - je hezké je mít a jsou kratší na psaní, ale ve skutečnosti nejsou požadavkem. Nicméně při práci s anonymními typy (o nichž bude řeč později) dává smysl deklarovat vaše objekty s klíčovým slovem var:
var myObj = new
{
Name = "John Doe",
Age = 42
};
Console.WriteLine(myObj.Name);
V tomto případě opravdu potřebujete klíčové slovo var, abyste později mohli přistupovat k polím anonymního typu, jak je ukázáno v tomto příkladu.
Shrnutí
Klíčové slovo var vám umožňuje deklarovat lokální proměnnou (uvnitř metody nebo smyčky) bez explicitního uvedení typu - místo toho kompilátor C# odvodí typ z pravé části deklarace. To může být v mnoha situacích opravdu pohodlné, ale může také váš kód učinit méně čitelným. „Var“ můžete použít, nebo se držet explicitního deklarování typů proměnných - jak preferujete, ale pro anonymní typy je to, jak již bylo vysvětleno, nutné.