динамический и тип объекта

for (int i = 1; i <= paymentNumber; i++) {
    if (i % 2 == 0)
        getMonthSwitch(paymentNumber);
    else
        getMonthIf(paymentNumber);
}

Оператор % возвращает разницу после деления, которая будет равна 0, если i делится на 2.

24
задан HerbalMart 1 October 2015 в 12:46
поделиться

2 ответа

Они очень разные.

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

Однако с типом объекта мало что можно сделать - у него почти нет членов. Где вы его используете? Если вы хотите написать код общего назначения, который может работать с различными типами, вам обычно следует рассматривать обобщенные типы, а не объект .

36
ответ дан 28 November 2019 в 23:34
поделиться

С развитием языка C # мы видим, что даже тип var сравним с динамическими типами и и объектами . Вот все 3 типа, которые я узнал, сравнивая эти 7 пунктов:

Объект

  1. Объект был представлен с C # 1.0.
  2. Он может хранить любые значения, потому что объект является базовым классом всех типов в .NET Framework.
  3. Компилятор имеет мало информации о типе.
  4. Тип объекта может быть передан в качестве аргумента метода, а метод также может возвращать тип объекта.
  5. Необходимо привести объектную переменную к исходному типу, чтобы использовать ее и выполнять нужные операции.
  6. Вызывает проблему во время выполнения, если сохраненное значение не преобразуется в базовый тип данных.
  7. Полезно, когда у нас нет больше информации о типе данных.

Var

  1. Var была представлена ​​в C # 3.0
  2. Она может хранить значения любого типа, но обязательна для инициализации типы var на момент объявления.
  3. Это типобезопасно, т. Е. Компилятор имеет всю информацию о сохраненном значении, поэтому он не вызывает проблем во время выполнения.
  4. Тип var не может быть передан как аргумент метода, а метод не может возвращать тип объекта. Тип Var работает в области, где он определен.
  5. Нет необходимости приводить, потому что у компилятора есть вся информация для выполнения операций.
  6. Не вызывает проблем, потому что компилятор имеет всю информацию о сохраненном значении.
  7. Полезно, когда мы не знаем фактический тип, то есть тип является анонимным.

Динамический

  1. Динамический был введен с C # 4.0
  2. Он может хранить переменную любого типа, похожую на старый VB языковая переменная.
  3. Это небезопасно, т. Е. Компилятор не имеет никакой информации о типе переменной.
  4. Динамический тип может передаваться как аргумент метода, а метод также может возвращать динамический тип.
  5. Приведение не требуется, но вам необходимо знать свойства и методы, относящиеся к хранимому типу.
  6. Вызывает проблему, если к неправильным свойствам или методам обращаются, потому что вся информация о сохраненном значении получает разрешение только во время выполнения.
  7. Полезно, когда нам нужно кодировать с использованием отражающих или динамических языков или с объектами COM, потому что вам нужно писать меньше кода.

Надеюсь, это кому-нибудь поможет.

Спасибо!

5
ответ дан 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: