확장 메서드를 사용하여 IEnumerable 컬렉션에 항목을 추가하는 가장 좋은 방법은 무엇입니까?C# IEnumerable에 AddItem의 확장 메서드 <T>
답변
enumerable.Concat(new[]{ objToAdd })
실제로 이것은 새로운 열거 형을 생성하고 기존 하나를 추가하지 않습니다. – Andrey
그래,하지만'IEnumerable
'Andrey'가 논평 한 것을 강조하기 위해서 : ** 정확히 ** ** AddItem 메소드를 구현하지 않습니다 (예를 들어,'item'을'IEnumerable'에 추가하십시오). 그러한 메소드의 더 적합한 이름은'Concat (item)'입니다. 메소드가 새로운 IEnumerable을 리턴 할 것으로 기대합니다. –
나는 확실하지, 내 IEnumerableExtensions 클래스는 너무 효율적이있다, 그러나 나는 매우 아껴서 사용합니다.
public static IEnumerable<T> Add<T>(this IEnumerable<T> enumerable, T item)
{
var list = enumerable.ToList();
list.Add(item);
return list;
}
당신 수 없습니다 (직접). 인터페이스의 목적은 열거자를 노출하는 것입니다.
편집 : 당신은하지 기존 IEnumerable
에 추가하는 대신 새로운 IEnumerable
에 합치 될 것이다, 추가 할 또 다른 (A List
같은) 유형 또는 연결에 IEnumerable을 변환해야합니다.
유일한 옵션은 IList, ICollection, IDictionary, ILookup 등과 같이 추가 할 수있는 인터페이스를 구현하는지 테스트하는 것입니다. 그런 다음에도 테스트에 추가 할 수 있는지 확실하지 않습니다. 기존 IEnumerable
.
그리고 추가 할 수있는 enumerable (pun가 의도 한) 클래스에 의해 구현됩니다. – Jamiec
IEnumerable 구현을 추가 할 필요는 없습니다. 그렇다면'IEnumerable.Add'가 존재할 것입니다. 의견은 절대적으로 정확합니다. –
- 1. C# 배열에 Contains() 확장 메서드 사용
- 2. C# : 확장 메서드 검색
- 3. C# 스레드 안전 확장 메서드
- 4. C# Count() 확장 메서드 성능
- 5. 개체에 대한 C# 확장 메서드
- 6. C#의 확장 메서드 연결
- 7. IEnumerable 용 확장 메서드 <Enum>?
- 8. 된 IQueryable <T> 확장 메서드
- 9. IEnumerable에 대한 String.Join (string, string [])의 유사어 <T>
- 10. C# : 암시 적 연산자 및 확장 메서드
- 11. 문자열 클래스에 확장 메서드 추가 - C#
- 12. 일반 형식 인수가있는 형식의 C# 확장 메서드
- 13. 유용한 확장 메서드 Date 개체의 C# 라이브러리
- 14. C# 확장 메서드 - 호출 개체를 반환합니다.
- 15. C#의 확장 메서드 : 왜 작동합니까?
- 16. 조인 확장 메서드 구문
- 17. ReaderWriterLockSlim 확장 메서드 성능
- 18. 확장 메서드 결합
- 19. IEnumerable에 새 항목을 삽입하는 방법
- 20. Enum의 IEnumerable 확장 메서드
- 21. ValueProvider.GetValue 확장 메서드
- 22. 확장 메서드 및 인터페이스
- 23. gridview eval의 확장 메서드
- 24. 정적 확장 메서드
- 25. Container.DataItem의 확장 메서드 출력?
- 26. Linq에 확장 메서드
- 27. LINQ 확장 메서드 재정의
- 28. 모델 인스턴스 확장 메서드
- 29. 확장 메서드 비동기 만들기
- 30. 모노로 확장 메서드 사용
IEnumerable에 요소를 추가 할 수 없습니다. 가장 좋은 것은 하나의 요소로 새 IEnumerable을 만드는 것입니다. – Andrey
예, 알고 있습니다. 그래서 내가 무엇이 최선의 방법인지 묻습니다. – mynkow