2009-09-18 2 views
1

() Оказавшись в ситуации, когда у меня есть метод с этой подписьюEnumerable.Unit функция

void DoSomething(IEnumerable<T> before, IEnumerable<T> after) 

Я считаю себя часто, чтобы звонить, когда я только что получил один элемент, а не IEnumerable.

Я думал о добавлении трех перегрузок, но это не помогает, когда один из аргументов равен нулю.

Поэтому я думал, что могу просто «обернуть» мой единственный элемент в IEnumerable и отправить его, но я не могу найти что-либо в Enumerable, которое выглядит как то, что я хочу (может быть, я не выгляжу достаточно сложно) ,

Так что я смотрю на что-то вроде этого

public static IEnumerable<T> EnumerableUnit<T>(T item) 
    { 
     if(item != null) yield return item; 
    } 

Является ли это хорошая идея? Или есть что-то лучшее, что я должен делать?

ответ

5

Это может помочь:

new[]{obj} 
+0

Да, это определенно лучше (ну, выглядит лучше меня), чем новый список (OBJ), который я подумал. – Benjol

+0

'new List (obj)' требует записи типа явно. Не беспокойтесь о 'new'ing массиве слишком много. Если бы существовал «Enumerable.Unit (obj)», ему все равно пришлось бы создавать новый класс для возврата. –

+0

Ах. Я ненавижу противоречивую интерпретацию уценки в комментариях к сообщениям. –