C #에서는 LINQ와 IEnumerable을 잘 사용합니다. 그리고 모든 것이 훌륭합니다 (또는 적어도 대부분 그렇습니다).
그러나 대부분의 경우 IEnumerable<X>
기본값으로 비어 있어야합니다 . 즉,
for (var x in xs) { ... }
null 검사없이 작동합니다. 이제 이것은 더 큰 맥락에 따라 현재 내가하는 일입니다.
var xs = f() ?? new X[0]; // when xs is assigned, sometimes
for (var x in xs ?? new X[0]) { ... } // inline, sometimes
이제 위의 내용은 나에게 완벽하게 괜찮지 만, 즉 배열 객체를 만드는 데 "추가 오버 헤드"가 있으면 신경 쓰지 않습니다 . 궁금합니다.
C # /. NET에 "빈 변경 불가능한 IEnumerable / IList"싱글 톤이 있습니까? (그렇지 않더라도 위에서 설명한 사례를 처리하는 "더 나은"방법이 있습니까?)
Java는 제네릭이 다르게 처리되기 때문에 유사한 개념이 C #에서도 작동 할 수 있는지 확실하지 않지만 Collections.EMPTY_LIST
"잘 형식화 된"을 통해 불변의 싱글 톤을 가지고 Collections.emptyList<T>()
있습니다.
감사.