В этом вопросе я нашел следующее:
int[] array = null;
foreach (int i in array ?? Enumerable.Empty<int>())
{
System.Console.WriteLine(string.Format("{0}", i));
}
а также
int[] returnArray = Do.Something() ?? new int[] {};
а также
... ?? new int[0]
В NotifyCollectionChangedEventHandler
я хотел применить Enumerable.Empty
так:
foreach (DrawingPoint drawingPoint in e.OldItems ?? Enumerable.Empty<DrawingPoint>())
this.RemovePointMarker(drawingPoint);
Примечание: OldItems
относится к типу IList
И это дает мне:
Оператор '??' не может применяться к операндам типа "System.Collections.IList" и
System.Collections.Generic.IEnumerable<DrawingPoint>
тем не мение
foreach (DrawingPoint drawingPoint in e.OldItems ?? new int[0])
а также
foreach (DrawingPoint drawingPoint in e.OldItems ?? new int[] {})
работает просто отлично.
Это почему?
Почему IList?? T[]
IList?? T[]
работает, но IList?? IEnumerable<T>
IList?? IEnumerable<T>
нет?