English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# базовый учебник

C# продвинутый учебник

C# направленный на объекты (OOP)

C# неявные переменные (var)

В C# переменные должны быть объявлены с использованием типа данных. Эти переменные называются переменными с явным типом.

int i = 100; // переменная с явным типом

C# 3.0 ввел ключевое слово var для объявления переменных уровня метода, не требуя указания типа данных явно.                    

var j = 100; // переменная с неявным типом локального уровня

Компилятор определяет тип переменной var по выражению справа от знака = в операторе. В данном примере var будет компилироваться как int.

Ниже приведены примеры определения типов из выражений.

int i = 10;
var j = i + 1; // компилируется как int

var может использоваться для объявления любых встроенных типов данных, пользовательских типов или анонимных типов переменных. Ниже приведен пример, где компилятор C# определяет тип по значению:        

static void Main(string[] args)
{
    var i = 10;
    Console.WriteLine("Тип i: {0}", i.GetType());
    var str = "Hello World!!";
    Console.WriteLine("Тип str: {0}", str.GetType());
    var dbl = 100.50d;
    Console.WriteLine("Тип dbl: {0}", dbl.GetType());
    var isValid = true;
    Console.WriteLine("Тип isValid: {0}", isValid.GetType());
    var ano = new { name = "Steve" };
    Console.WriteLine("Тип ano: {0}", ano.GetType());
    var arr = new[] { 1, 10, 20, 30 };
    Console.WriteLine("Тип arr: {0}", arr.GetType());
    var file = new FileInfo("MyFile");
    Console.WriteLine("Тип файла: {0}", file.GetType());
}

Переменные с неявным типом должны быть инициализированы при их объявлении; в противном случае компилятор C# выдаст ошибку: переменная с неявным типом должна быть инициализирована.

var i; // ошибка в компиляции: переменная с неявным типом должна быть инициализирована
i = 100;

var не позволяет объявлять несколько переменных в одном выражении.

var i = 100, j = 200, k = 300; // ошибка: невозможно объявить несколько переменных var в одном выражении // также верно var i = 100; 
var j = 200; 
var k = 300;

var не может использоваться в качестве аргумента функции.

void Display(var param) // ошибка в компиляции
{
    Console.Write(param);
}

var может использоваться в циклах for и foreach.

for(var i = 0; i < 10; i++)
{        Console.WriteLine(i);
}

var также может использоваться вместе с LINQ запросами.

// Набор строк
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C++",
    "MVC Tutorials",
    "Java" 
};
// Синтаксис LINQ
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;