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