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

Укажите значение по умолчанию для ссылочного типа

Как я понимаю, default (object), где "object" - это любой ссылочный тип, всегда возвращает null, но могу ли я указать, что такое значение по умолчанию? Например, я хочу, чтобы default (object) == new object();

4b9b3361

Ответ 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

Извините, я не Джон Скит...

Но в любом случае ответ "нет, вы не можете"