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