В C # я использую LINQ и IEnumerable.И все хорошо (или, по крайней мере, в основном так).
Однако во многих случаях я считаю, что мне нужна пустая IEnumerable<X>
по умолчанию.То есть я бы хотел, чтобы
for (var x in xs) { ... }
работал без проверки нуля.Теперь это то, что я сейчас делаю, в зависимости от более широкого контекста:
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
Теперь, в то время как вышеописанное идеально подходит для меня - то есть, если есть какой-либо "дополнительныйнакладные расходы "при создании объекта массива I просто не волнует - мне было интересно:
Есть ли в C # /. NET" пустой неизменяемый синглтон IEnumerable / IList "? (И, даже если нет, есть ли "лучший" способ обработки описанного выше случая?)
Java имеет Collections.EMPTY_LIST
неизменный синглтон - "хорошо типизированный""via Collections.emptyList<T>()
- который служит этой цели, хотя я не уверен, что подобная концепция могла бы работать даже в C #, потому что генерики обрабатываются по-разному.
Спасибо.