Вы не можете напрямую изменить это. Но у вас есть несколько альтернатив.
Если ваша последовательность не содержит null
s, вы можете использовать:
MyClass result = seq.FirstOrDefault() ?? new MyClass("HelloWorld");
Или вы можете реализовать собственную версию, которая принимает параметр в качестве значения по умолчанию:
public static T FirstOrDefault<T>(this IEnumerable<T> source, T defaultValue)
{
using (IEnumerator<T> enumerator = source.GetEnumerator())
{
if (enumerator.MoveNext())
return enumerator.Current;
else
return defaultValue;
}
}
public static T FirstOrDefault<T>(this IEnumerable<T> source, Func<T, bool> predicate, T defaultValue)
{
using (IEnumerator<T> enumerator = source.Where(predicate).GetEnumerator())
{
if (enumerator.MoveNext())
return enumerator.Current;
else
return defaultValue;
}
}
Вы также можете использовать другое имя для этой реализации FirstOrDefault
, но, поскольку оно не конфликтует ни с одной из существующих перегрузок, я просто использовал то же имя.
https://github.com/CodesInChaos/ChaosUtil/blob/master/Chaos.Util/LinqExtensions.cs