如何初始化一个Point数组

本文关键字:一个 Point 数组 初始化 | 更新日期: 2023-09-27 18:03:38

我需要初始化一个包含三个点的数组。我想这样写,但是三个元素只写一次。

Point P = new Point { X = 0, Y = 1 };
Point[] P = new Point[3];// <----  ?

如何正确书写?

如何初始化一个Point数组

下面是创建3个不同点的数组的代码:

Point[] points = new Point[] { new Point { X = 0, Y = 1 }, new Point { X = 2, Y = 1 }, new Point { X = 0, Y = 3 } };

没有真正的简写。对于三个,只写三次:

Point initial = new Point { X = 0, Y = 1 };
Point[] P = new Point[3] { initial, initial, initial };

下面的例子可以使用Enumerable.Range创建10个Point

var points = Enumerable.Range(0, 10)
            .Select(x => new Point {X = 0, Y = 1})
            .ToArray();

这是最短的解决方案:

Point[] points = Enumerable.Repeat<Point>(new Point(0, 1), 3).ToArray();

因为您的问题处理的是具有静态坐标的点的静态固定长度数组,因此当数组初始化如此简单时,无需在此上下文中使用LINQ和循环。

你可以这样初始化数组:

Point[] P = new Point[] 
{ 
    new Point { X = 0, Y = 1 }, 
    new Point { X = 0, Y = 1 }, 
    new Point { X = 0, Y = 1 },
    ...
};

或使用duck输入类型推断(感谢minitech):

var P = new [] 
{ 
    new Point { X = 0, Y = 1 }, 
    new Point { X = 0, Y = 1 }, 
    new Point { X = 0, Y = 1 },
    ...
};