3

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

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

Point[] P = new Point[3];// <----  ?

如何正确书写?

4

5 回答 5

14

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

Point[] points = new Point[] { new Point { X = 0, Y = 1 }, new Point { X = 2, Y = 1 }, new Point { X = 0, Y = 3 } };
于 2013-03-13T14:29:28.257 回答
6

没有真正的速记。三,写三遍即可:

Point initial = new Point { X = 0, Y = 1 };
Point[] P = new Point[3] { initial, initial, initial };
于 2013-03-13T14:28:25.000 回答
5

下面的示例您可以Point使用创建 10Enumerable.Range

var points = Enumerable.Range(0, 10)
            .Select(x => new Point {X = 0, Y = 1})
            .ToArray();
于 2013-03-13T14:31:27.553 回答
4

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

所以你可以这样初始化一个数组:

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

或使用鸭子类型推断(感谢minitech):

var P = new [] 
{ 
    new Point { X = 0, Y = 1 }, 
    new Point { X = 0, Y = 1 }, 
    new Point { X = 0, Y = 1 },
    ...
};
于 2013-03-13T14:29:50.313 回答
3

这是最短的解决方案:

Point[] points = Enumerable.Repeat<Point>(new Point(0, 1), 3).ToArray();
于 2013-03-13T14:32:53.873 回答