Это безопасный и эффективный способ обработки чтения нулевых значений в БД с использованием Generics?

StackOverflow https://stackoverflow.com/questions/1438888

  •  10-07-2019
  •  | 
  •  

Вопрос

Я играл с дженериками и надеялся получить отзывы или предложения по функции, которую я создал, чтобы справиться с чтением нулевых значений из БД. Моя главная проблема заключается в утверждении if. Есть ли лучший способ узнать, является ли T строковым т. Д.? Спасибо.

public static T CheckNull<T>(object value)
    {
        if ((value != null) && value.Equals(DBNull.Value))
        {
            if (object.ReferenceEquals(typeof(T), typeof(String)))
                value = string.Empty;
            else if (object.ReferenceEquals(typeof(T), typeof(Boolean)))
                value = false;
            else
                value = null;
        }
        return (T)value;
    }
Это было полезно?

Решение

Независимо от типа T , вы можете вернуться к default (T) , который предоставит значение по умолчанию для данного типа ( string.Empty , 0 , false , null и т. д.):

value = default(T);

Изменить: default (string) , однако, возвращает null .

Другие советы

Вам также необходимо охватить другие примитивные типы данных.

value = default(T);

Возвращает значение null, если это ссылочный тип, иначе 0, false или любое другое подходящее значение по умолчанию для данного типа T.

Примечание. по умолчанию (строка): null , а не string.Empty. Если вы хотите, чтобы это было String.Empty , вам нужно реализовать это как исключение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top