Есть ли оператор {}?

можно использовать

List<string> sList = new List<string>() { "1", "2" };

создать новый список и добавить 2 вещи. The { "1", "2" } - часть работает только потому, что List<T> реализовала Add() метод.

мой вопрос:{} что-то вроде оператора и может быть перегружено, например, для добавления элементов дважды

1 ответов


является {} чем-то вроде оператора и может быть перегружен, например, для добавления предметы дважды

любой тип коллекции, который предоставляет Add метод, встроенный или как метод расширения (начиная с C#-6), можно использовать инициализатор коллекции, предоставляемый { } синтаксис. Если Add метод добавляет один и тот же элемент дважды в эту коллекцию, то это то, что он будет делать.

если вы хотите, чтобы поведение { } изменить, вам придется переопределить или перегрузить Add метод сбора.

некоторые дополнительные спецификации goodness (взяты из ответ):

Спецификация Языка C# - 7.5.10.3 Инициализаторы Коллекции

объект коллекции, к которому применяется инициализатор коллекции должен иметь тип, реализующий System.Коллекции.IEnumerable или a возникает ошибка времени компиляции. Для каждого заданного элемента в порядке коллекции инициализатор вызывает метод Add объекта с список выражений инициализатора элемента в качестве списка аргументов, применение нормального разрешения перегрузки для каждого вызова. Таким образом, объект коллекции должен содержать применимый метод Add для каждого инициализатор элемента.