Как я понимаю, default (object), где "object" - это любой ссылочный тип, всегда возвращает null, но могу ли я указать, что такое значение по умолчанию? Например, я хочу, чтобы default (object) == new object();
Укажите значение по умолчанию для ссылочного типа
Ответ 1
Нет. default(type)
всегда будет возвращать то же самое - "нулевую" версию этого типа. Для ссылочного типа это дескриптор объекта, который всегда задается с нулевым значением, равным null
. Для типа значения это всегда структура со всеми членами, установленными в ноль.
Невозможно переопределить это поведение - спецификация языка разработана таким образом.
Изменить: Что касается вашего комментария:
Просто, чтобы сказать
FirstOrDefault()
и никогда не получить нуль.
Я бы не рекомендовал это в любом случае. Пользователи ожидают, что FirstOrDefault()
вернет null
при сбое. Лучше написать собственный метод расширения:
static T FirstOrNewInstance<T>(this IEnumerable<T> sequence) where T : class, new()
{
return sequence.FirstOrDefault() ?? new T();
}
Ответ 2
Извините, я не Джон Скит...
Но в любом случае ответ "нет, вы не можете"