c # массив точек - PullRequest
       8

c # массив точек

0 голосов
/ 30 сентября 2018

В настоящее время я храню X и Y, используя

Point[] points1 = new Point[] { 
    new Point { X = 262, Y = 321 }, 
    new Point { X = 325, Y = 334 }, 
    new Point { X = 278, Y = 387 }
};

, как я могу установить переменную 'points1' глобально?поэтому я могу использовать цикл для извлечения данных X и Y.

Пример кода, который я пробовал

Point[] points1 = new Point[]{};

for(int i = 0 ; i <10 ;i ++)
{
  points1 = new Point[] { new Point { X = i, Y = i++}};
}

, но всегда получаю последний результат вместо списка массивов.

Ответы [ 4 ]

0 голосов
/ 30 сентября 2018
        List<Point> points1 = new List<Point>();

        for (int i = 0; i < 10; i++)
        {
            points1.Add(new Point { X = i, Y = i++ });
        }
0 голосов
/ 30 сентября 2018

Вместо создания нового массива (который имеет тип Point[]) на каждой итерации, вы должны создать новый массив-элемент (который имеет тип Point) и поместите его в массив:

for(int i = 0; i < 10; i++)
{
    points1[i] = new Point { X = i, Y = i++ };
}

Кроме того, вы увеличиваете i дважды, один раз в объявлении цикла for и один раз при создании нового Point.Для этого вы получите следующие значения для ваших X - и Y -координат:

{ 0, 2, 4, 6, 8 }. 

Чтобы создать 10 точек вместо только 5, вы должны пропустить одно из этих приращений.

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

List<Point> points = new List<Point>();
points.Add(new Point(...));
0 голосов
/ 30 сентября 2018

Вы можете установить точки для этого массива напрямую:

Point[] points1 = new Point[10];
for (int i = 0; i < 10; i++)
{
    points1[i] =  new Point { X = i, Y = i };
}

Если у вас нет фиксированного количества точек, вы должны использовать List вместо массива.Вот пример:

List<Point> points1 = new List<Point>();
for (int i = 0; i < 10; i++) // can be any limit
{
    points1.Add(new Point { X = i, Y = i++ });
}
// you can convert to array at any time
var points = points1.ToArray();
Console.WriteLine(points1);
0 голосов
/ 30 сентября 2018
for(int i = 0 ; i <10 ;i ++)
{
points1 = new Point[] { new Point { X = i, Y = i++}};
}

не устанавливает значение каждого элемента в массиве.Он переназначает точки 1 новым массивом на каждой итерации.Обратите внимание, что points1 присваивается, а не элемент points1.Для этого вам нужно назначить новые значения Point для points1 [i].

...