Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Инициализация объекта без new

#c_sharp


Объявить класс Dictionary можно так: 
var d = new Dictionary
{
    {1, "..."},
    ...
};

Как сделать так, чтобы я мог инициализировать свой класс подобным образом?
List l = new List
{
    {...} // Инициализация моего класса
}
    


Ответы

Ответ 1



Чтобы работал такой неявный инициализатор нужно добавить инициализируемому классу метод Add с параметрами, соответствующими тому, что будет в квадратных скобках. Например, если у вас есть класс MyClass, у которого конструктор от двух строк и вы хотите легко инициализировать список таких классов, то придется завести класс для списка: class MyClassList : List { public void Add(string s1, string s2) { Add(new MyClass(s1, s2)); } } теперь Вы получаете возможность инициализировать свой список так: List l = new MyClassList() { {"a", "b"}, {"c", "d"} };

Комментариев нет:

Отправить комментарий