Является ли тип var
эквивалентным Variant
в VB? Когда object
может принимать любой тип данных, в чем разница между этими двумя?
Разница между "var" и "object" в С#
Ответ 1
Начиная с Visual С# 3.0, переменные, объявленные в области метода, могут иметь неявный тип var
. Неявно типизированная локальная переменная строго типизирована так же, как если бы вы объявили тип самостоятельно, но компилятор определяет тип. Следующие два объявления i
являются функционально эквивалентными:
var i = 10; //implicitly typed
int i = 10; //explicitly typed
var не является объектом
Вы должны обязательно прочитать следующее: С# 3.0 - Var не объект
Ответ 2
Подробнее см. http://www.codeproject.com/Tips/460614/Difference-between-var-and-dynamic-in-Csharp
Ответ 3
Nope - var
просто означает, что вы позволяете компилятору вывести тип из выражения, используемого для назначения значения переменной.
Это просто синтаксический сахар, позволяющий вам делать меньше ввода - попробуйте сделать параметр метода типа "var
" и посмотреть, что произойдет:]
Итак, если у вас есть выражение типа:
var x = new Widget();
x
будет иметь тип Widget
, а не object
.
Ответ 4
Другие ответы верны, я просто хотел бы добавить, что вы можете навести курсор на ключевое слово 'var' и нажать F12, чтобы перейти к объявлению предполагаемого типа.
Ответ 5
Добавление в сообщение.
Parent p = new Parent();
Child c = new Child();//Child class derives Parent class
Parent p1 = new Child();
С помощью выше вы можете получить доступ только к родительским (p1) свойствам, хотя он содержит ссылку на дочерний объект.
var p= new Parent();
var c= new Child();
var p1 = new Child();
при использовании "var" вместо класса у вас есть доступ к свойствам родительского и дочернего классов. он ведет себя как создание объекта для дочернего класса.
Ответ 6
одно отличие - Бокс и Unboxing с Object.