Есть ли оператор {}?
можно использовать
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 для каждого инициализатор элемента.