В чем разница между ObjectQuery и "var"? - PullRequest
1 голос
/ 21 июня 2009

Посмотрите, пожалуйста, ниже, в чем разница между двумя типами кодов. есть ли разница в производительности или что еще?

Первые коды



                ObjectQuery departmans = staffContext.Departman;
                GridView1.DataSource = departmans;
                GridView1.DataBind();

<b>Second Codes</b>

var departmans = staffContext.Departman;
   GridView1.DataSource = departmans;
                GridView1.DataBind();

Спасибо

Ответы [ 3 ]

4 голосов
/ 21 июня 2009

Эффективная разница в выводимом коде зависит от типа Departman. Если тип Departman - ObjectQuery, то код эквивалентен.

Ключевое слово "var" просто сообщает компилятору, пожалуйста, установите тип этой переменной на тот же тип, что и для присваиваемого ей выражения. В данном случае это тип Departman.

2 голосов
/ 21 июня 2009

Нет никакой разницы (при условии, что тип staffContext.Departman - это ObjectQuery, а не какой-то подкласс ObjectQuery). Компилятор просто выводит тип на основе правой части присваивания.

1 голос
/ 21 июня 2009

Тип, который представляет ключевое слово var, должен быть известен во время компиляции, поэтому, пока тип фактически одинаков в обоих случаях, исполняемый код будет идентичен.

Тип выводится в зависимости от типа правой стороны, поэтому в некоторых случаях вам нужно указать тип, чтобы получить желаемый результат. Например:

Stream s = File.OpenRead(fileName);

Это, конечно, даст вам переменную типа Stream. С другой стороны:

var s = File.OpenRead(fileName);

Вместо этого вы получите переменную типа FileStream.

Как правило, если тип справа не очевиден, вам не следует использовать ключевое слово var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...