Jest to część składni inicjatora kolekcji w .NET. Tej składni możesz używać w każdej tworzonej kolekcji, o ile:
Dzieje się tak, gdy wywoływany jest domyślny konstruktor, a następnie Add(...)
jest wywoływany dla każdego elementu członkowskiego inicjatora.
Zatem te dwa bloki są z grubsza identyczne:
List<int> a = new List<int> { 1, 2, 3 };
I
List<int> temp = new List<int>();
temp.Add(1);
temp.Add(2);
temp.Add(3);
List<int> a = temp;
Ty można nazwać alternatywną konstruktora, jeśli chcesz, na przykład, aby zapobiec nadmiernej doborze List<T>
podczas uprawy, itp:
List<int> a = new List<int>(3) { 1, 2, 3, }
Zwróć uwagę, że Add()
metoda nie musi uwzględniać jednego elementu, na przykład Add()
metoda dla Dictionary<TKey, TValue>
wymaga dwóch elementów:
var grades = new Dictionary<string, int>
{
{ "Suzy", 100 },
{ "David", 98 },
{ "Karen", 73 }
};
Jest mniej więcej identyczny z:
var temp = new Dictionary<string, int>();
temp.Add("Suzy", 100);
temp.Add("David", 98);
temp.Add("Karen", 73);
var grades = temp;
Tak więc, aby dodać to do swojej własnej klasy, wszystko, co musisz zrobić, jak wspomniano, to zaimplementować IEnumerable
(ponownie, najlepiej IEnumerable<T>
) i utworzyć jedną lub więcej Add()
metod:
public class SomeCollection<T> : IEnumerable<T>
{
public void Add(T item)
{
}
public IEnumerator<T> GetEnumerator()
{
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
Następnie możesz go używać tak, jak robią to kolekcje BCL:
public class MyProgram
{
private SomeCollection<int> _myCollection = new SomeCollection<int> { 13, 5, 7 };
}
(Aby uzyskać więcej informacji, zobacz MSDN )