Перегрузка оператора C # списком <T> - PullRequest
6 голосов
/ 04 февраля 2012

Я пытаюсь перегрузить оператор в C # (не спрашиваю почему!), Который применяется к Lists. Например, я хотел бы иметь возможность написать:

List<string> x = // some list of things
List<string> y = // some list of things
List<string> z = x + y

так, чтобы 'z' содержал все содержимое 'x', а затем содержимое 'y' Я знаю, что уже есть способы объединить два списка, я просто пытаюсь понять, как перегрузка операторов работает с общими структурами.

(Кстати, это класс List из Systems.Collections.Generic.)

1 Ответ

7 голосов
/ 04 февраля 2012

Насколько я знаю, это невозможно, вы должны реализовать перегрузку оператора в типе, который его использует.Поскольку List<T> не является вашим типом, вы не можете переопределить операторы в нем.

Однако вы можете получить свой собственный тип из List<string> и переопределить оператор внутри вашего класса.

class StringList : List<string> {
    public static StringList operator +(StringList lhs, StringList rhs) {
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...