Страницы

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

понедельник, 1 апреля 2019 г.

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

Объявить класс Dictionary можно так: var d = new Dictionary { {1, "..."}, ... }; Как сделать так, чтобы я мог инициализировать свой класс подобным образом? List l = new List { {...} // Инициализация моего класса }


Ответ

Чтобы работал такой неявный инициализатор нужно добавить инициализируемому классу метод 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"} };

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

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