Section 26.3: 사용자 정의 class 를 컬렉션 초기자 (Collection initializer) 로 초기화하기
특정 class 가 컬렉션 초기자 (Collection initializer) 를 지원하기 위해서는, 해당 class 가 IEnumerable
인터페이스를 상속받아야 하며, 또한 최소한 하나의 Add
메소드를 가져야 한다. C# 6 부터는, extension method 를 사용하여 IEnumerable
을 상속받는 어떠한 collection 일지라도 사용자가 정의한 Add
메소드를 추가해줄 수 수 있다.
class Program {
static void Main() {
var col = new MyCollection {
"foo",
{
"bar",
3
},
"baz",
123.45 d,
};
}
}
class MyCollection: IEnumerable {
private IList list = new ArrayList();
public void Add(string item) {
list.Add(item)
}
public void Add(string item, int count) {
for (int i = 0; i < count; i++) {
list.Add(item);
}
}
public IEnumerator GetEnumerator() {
return list.GetEnumerator();
}
}
static class MyCollectionExtensions {
public static void Add(this MyCollection @this, double value) =>
@this.Add(value.ToString());
}
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
26.5: 컬렉션 초기자 (Collection Initializer) 에서 배열을 인자로 받기 (0) | 2021.08.11 |
---|---|
26.4: 객체 초기자 (Object initializer) 내에서 컬렉션 초기자 (Collection initializer) 사용하기 (0) | 2021.08.11 |
26.2: C# 6 인덱스 초기자 (Index initializer) (0) | 2021.07.07 |
26.1: 컬렉션 초기자 (Collection initializer) (0) | 2021.07.06 |
25.1: BigInteger 활용 - 피보나치 수열 중 처음으로 1,000 개의 숫자를 가지는 값 계산하기 (0) | 2021.07.06 |