Как составить список из массива целых? - PullRequest
1 голос
/ 25 июня 2011

Я хочу иметь массив из 2 значений Int32, скажем:

 Int32 x
 Int32 y

Я хочу составить список этих массивов.

  • Как мне объявить и инициализировать этот массив и список?
  • Как получить доступ к членам списка после его заполнения?

Ответы [ 5 ]

8 голосов
/ 25 июня 2011
List<int[]> l = new List<int[]>();

l.Add(new int[] { 1, 2 });
l.Add(new int[] { 3, 4 });

int a = l[1][0];   // a == 3
6 голосов
/ 25 июня 2011

Звучит так, будто вы пытаетесь превратить массив в структуру данных, а не хранить значения в последовательности. Не делай этого. Узнайте, как использовать более сложные структуры данных в своих интересах.

Вы упоминаете тип Point со значениями x и y. Как насчет класса вместо этого?

class Point
{
    public readonly int X;
    public readonly int Y;
    public Point( int x, int y )
    {
        X = x;
        Y = y;
    }
}

Теперь вы можете создавать экземпляры вашего нового типа и добавлять их в список, упрощая весь процесс, а также следя за тем, чтобы не соскользнуть с дороги и добавить x в ваш массив, где y должно быть.

List<Point> ls = new List<Point>();
ls.Add( new Point( 0, 0 ) );
ls.Add( new Point( 10, 10 ) );
ls.Add( new Point( 100, 100 ) );

В любом случае, было бы неплохо прочитать о том, как вы можете создавать свои собственные структуры данных в C #. Есть много преимуществ в том, чтобы научиться правильно хранить ваши данные таким образом, чтобы с ними было легко работать.

2 голосов
/ 25 июня 2011

Недостаточно информации о том, что вы хотели бы. Но вот основной пример инициализации общего списка массива Int32. Я надеюсь, что это помогает

        Int32 x = 1; 
        Int32 y = 2;

        // example of declaring a list of int32 arrays
        var list = new List<Int32[]> {
            new Int32[] {x, y}
        };

        // accessing x
        list[0][0] = 1;

        // accessing y
        list[0][1] = 1;
1 голос
/ 25 июня 2011

Ну, есть два типа массивов.Многомерные массивы и зубчатые массивы.Вы можете использовать любой из них (подробнее об их различиях в http://msdn.microsoft.com/en-us/library/aa288453(v=vs.71).aspx).

Пример зубчатого массива:

Int32[][] = new Int32[] { new Int32[] {1,2}, new Int32[] {3,4}};

Пример многомерного массива:

Int32[,] = new Int32[,] {{1,2},{3,4}};

Надеялся, что поможет немного прояснить ситуацию. Если вы имели в виду реальные списки, то посмотрите на другие ответы.

1 голос
/ 25 июня 2011

используйте список кортежей, который содержит только два типа int32:

List<Tuple<int, int>> myList = new List<Tuple<int, int>>();

var item = new Tuple<int, int>(25, 3);

myList[0] = new Tuple<int, int>(20, 9);//acess to list items by index index

myList.Add(item);//insert item to collection

myList.IndexOf(item);//get the index of item

myList.Remove(item);//remove item from collection

Преимущество использования List<Tuple<int, int>> над вторым списком, таким как List<List<int, int>> или List<int[]>, заключается в том, что вы явно указываете элементы списка вбыть всего два целых числа.

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