Подтвердить что ты не робот

Разница между "var" и "object" в С#

Является ли тип var эквивалентным Variant в VB? Когда object может принимать любой тип данных, в чем разница между этими двумя?

4b9b3361

Ответ 1

Начиная с Visual С# 3.0, переменные, объявленные в области метода, могут иметь неявный тип var. Неявно типизированная локальная переменная строго типизирована так же, как если бы вы объявили тип самостоятельно, но компилятор определяет тип. Следующие два объявления i являются функционально эквивалентными:

var i = 10; //implicitly typed
int i = 10; //explicitly typed

var не является объектом

Вы должны обязательно прочитать следующее: С# 3.0 - Var не объект

Ответ 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.