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

Методы кодирования для С# Nullable type

Я никогда не использовал типы NULL в моем коде С#. Теперь я решил изменить свою практику кодирования, введя типы NULL в свой код.

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

В каких областях следует позаботиться?

В каких точках я должен всегда следить?

4b9b3361

Ответ 1

Nullable<T> полезен, когда вам нужно возможное недопустимое состояние для типа значения или если данные извлекаются из базы данных который может содержать значение null для столбца. Это очень часто встречается в каком-то старом коде FORTRAN. Я переношу на С# для отрицательных значений или 0, но это очень сложно, особенно когда значения используются в математических функциях. Более явно использовать Nullable<T> для отображения возможного недопустимого состояния.

Следует отметить, что одно и то же:

Nullable<int> myNullableInt;
int? myNullableInt;

Ответ 2

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

У них есть накладные расходы, и если они используются неправильно, они излишне увеличивают сложность вашего кода.

Вы также должны быть осторожны, чтобы избежать нулевых различий, поэтому они создают дополнительную нагрузку на программистов, работающих с этим кодом. (В некоторых случаях это предпочтительнее стоимости обходного подхода, хотя!)

Ответ 3

Кроме того, я нахожу следующее свойство полезным:

public bool? IsHappy { get; set; }

Это позволяет мне иметь трехзначное логическое значение: да, нет, не ответил.

Ответ 4

Несколько других хороших идей для использования типов с нулевым значением:

  • Не забывайте о гибкости синтаксиса. Nullable<int> совпадает с int?
  • Проверить значение null (var.HasValue) и применить его к базовому типу, прежде чем использовать его в качестве базового типа.

Ответ 5

Они кажутся подходящими для начального значения некоторых переменных типа значения.

int? lastCodeReceived;

if (lastCodeReceived.HasValue)
{
    // At least one code has been received.
}

Ответ 6

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