Разница между типами var и object в c#

176
06 июля 2019, 21:20

Доброго времени суток!

Часто стал видеть в исходниках выражения типа var a = конструктор или функция.

Зачем используется var почему не используется определение конкретного типа объекта?

Да и в конце концов почему var, а не object если в шарпе любой объект унаследован от object ?

Ps складывается впечатление, что var уже используется и к месту и не к месту, наподобие некоторых ответов на форуме с использованием регулярных выражений, linq, и других страшных слов.

Answer 1

Декларация

var x = new List<int>();

строго равнозначна декларации

List<int> x = new List<int>();

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

Декларация же

object x = new List<int>();

— совершенно другой зверь! Если в предыдущем случае вы могли написать x[0], то в этом случае такой код не откомпилируется, поскольку для object'а индексатор (да и все остальные функции, специфичные для List<int>, не определены.

У var есть и другие преимущества перед явным объявлением типа, кроме сокращения записи. Дело в том, что вы можете завести переменную, содержащую объект анонимного типа, только с использованием var (ну или с помощью трюков с generic'ами).

Однако, var не может быть использовано для инициализаторов полей.

Answer 2

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

Использовать следует везде, где тип переменной очевиден из той самой правой части выражения, либо где имя типа очень длинное и сильно загромождает код.

READ ALSO
Остановка BackgroundWorker в бесконечном цикле

Остановка BackgroundWorker в бесконечном цикле

Пишу программу с опросом пула модемов (они на COM - портах) перебор портов осуществляется в бесконечном цикле

225
PHP Почему насчитывает лишнее время?

PHP Почему насчитывает лишнее время?

Вывод 1970-01-01 03:00:47 Почему так? должно же быть 0000-00-00 00:00:47

164
Порядок выполнения тестовых файлов Codeception

Порядок выполнения тестовых файлов Codeception

Проблема состоит в следующем

187
Как прибавить к дате 1 день?

Как прибавить к дате 1 день?

Я не программист, но занимаюсь одним сайтом как администраторПотребовалось прибавить к дате 1 день

209