Общие правила.

На нашем сайте вы найдёте интересные статьи и руководства, которые помогут вам в изучении различных технологий! Вы можете оставлять свои комментарии и задавать различные вопросы.

Вы можете попросить ответа на интересующие вас вопросы и получить помощь, если у вас что-то не получается. Просто задайте свой вопрос на форуме и опишите, что вы хотели бы знать.

Пожалуйста, будьте культурны при общении на форуме.

Публикация своих статей

На сайте вы можете легко опубликовать вашу статью. Это всегда приветствуется!

Пара советов:

• Орфографически правильный текст удобнее и приятнее читать. В интернете есть множество сервисов, которые могут помочь вам с этим.
• «Оформляйте» свой текст. Использование картинок, красивое оформление текста и разбивание связанных строчек на абзацы делает текст лучше.

Удачи!

Обсуждение статей

Наш сайт — это форум. Вы всегда можете оценить статью, задать о ней вопрос и обсудить тему статьи.

Публикация вопросов

Для вопросов на форуме есть специальная тема — помощь. В ней можно задать интересующий вас вопрос, на который другие участники форума могут ответить.

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

Форум и полезные статьи!

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА:

Типы данных dynamic, var и object и разница между ними в C# 2 года 3 мес. назад #28

  • Vlad_i_
  • Vlad_i_ аватар Автор темы
  • Не в сети
  • Администратор
  • Администратор
  • Сообщений: 18
  • Спасибо получено: 0
В этой статье рассмотрим типы dynamic, var, object в языке C# и поймём разницу между ними.

Тип var.

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

var number = 1;
Здесь мы создали переменную number без типа и задали ей значение 1, и эта переменная автоматически получила тип int. Вместо int можно было выбрать любой другой тип для var:

var number = "один";
Здесь мы снова создали переменную number без типа и добавили значение с типом string.

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

var test = "один"; // задали переменной без типа строку, теперь переменная test имеет тип string
test = 1; // мы больше не сможем так сделать, ибо переменная test имеет тип string, а 1 это тип int
Тип object.
Почти все типы в C# являются производными от типа object. Это можно назвать универсальным типом, в котором можно хранить любой тип значений когда угодно. То есть, в отличии от var, в object можно передать любой тип переменной даже после того, как мы уже задали для него значение. Пример:

object test; // объявили пустую переменную с типом object
test = 1; // задали переменной test значение с типом int
test = "один"; // поменяли значение переменной test на значение с типом string
Тип dynamic
dynamic тоже, как и object, может когда угодно принимать значения любых типов (хотя в отличии от object не является производным для большей части типов). То есть, мы можем сделать то же самое, что и в примере выше, только используя dynamic:

dynamic test; // объявили пустую переменную с типом dynamic
test = 1; // задали переменной test значение с типом int
test = "один"; // поменяли значение переменной test на значение с типом string
Но при этом есть несколько различий. Например, с переменной типа dynamic мы можем выполнять операции:

dynamic numberOne = 1;
object numberTwo = 2;
numberOne++; // эта переменная типа dynamic воспринимается компилятором как int, и операция произойдет
numberTwo++; // здесь мы получим ошибку, потому что использовать операцию ++ нельзя для типа object
Разница между типами
Из статьи мы узнали, что все три типа могут хранить разные типы значений, но есть разница. var, в отличии от dynamic и object, меняет свой тип только при первом присваивании: задав переменной значение типа int, эта переменная после этого всегда будет типа int. А dynamic, в отличии от object, может выполнять операции, присущие определенным типам. То есть если, например, переменные dynamic и object имеют значения int, то с dynamic мы можем выполнить операцию ++, а с object — нет.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1