Двумерный массив с .Add в C # - PullRequest
3 голосов
/ 29 февраля 2012

Мне нужно хранить коллекцию из Point пар, но я не хочу использовать простые массивы C # для привязки к использованию итераторов.Какой самый простой способ (кроме использования KeyValuePair<Point,Point>) иметь такую ​​двумерную коллекцию под рукой, имея возможность .Add(Point, Point) к ней?

Ответы [ 4 ]

4 голосов
/ 29 февраля 2012

Подкласс List<Tuple<Point,Point>> и создать перегрузку .Добавить с двумя параметрами Point.

public class MyCollection : List<Tuple<Point, Point>>
{
    public void Add(Point p1, Point p2)
    {
        this.Add(Tuple.Create(p1, p2));
    }
}
4 голосов
/ 29 февраля 2012

Point,Point - это , а не пара ключ-значение, это Tuple<Point,Point>. Вы можете создать List<Tuple<Point,Point>> или что угодно, что вам нужно.

Однако вы должны иметь в виду что-то - Tuple является неизменной структурой - вы не можете изменить его элементы так, чтобы они указывали на другие Point объекты (однако, если сам объект Point является изменяемым, вы может мутировать Point). Если вам нужно изменить элементы из этого списка, чтобы они указывали на другие точки, создайте собственный класс для них.

1 голос
/ 29 февраля 2012
1 голос
/ 29 февраля 2012

будет List<Tuple<int,int>> вам помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...