如何初始化Point数组?

时间:2013-03-13 14:26:32

标签: c# arrays constructor initialization point

我需要初始化三个点的数组。 我想写下面的内容,但只有三个元素一次。

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

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

如何正确写作?

5 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:5)

这并不是真正的简写。对于三个,只需写三次:

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

答案 2 :(得分:5)

以下示例您可以使用Point

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

答案 3 :(得分:4)

因为你质疑有静态固定长度的点数与静态坐标的交易,当数组初始化就这么简单时,不需要在这个上下文中使用LINQ和循环。

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

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

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

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

答案 4 :(得分:3)

这是最短的解决方案:

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