我需要初始化一个由三个点组成的数组。
我希望像下面这样写,但只需写一次以表示三个元素。
Point P = new Point { X = 0, Y = 1 };
Point[] P = new Point[3];// <---- ?
如何正确地撰写文章?
Point P = new Point { X = 0, Y = 1 };
Point[] P = new Point[3];// <---- ?
如何正确地撰写文章?
这里是创建包含3个不同点的数组的代码:
Point[] points = new Point[] { new Point { X = 0, Y = 1 }, new Point { X = 2, Y = 1 }, new Point { X = 0, Y = 3 } };
以下示例中,您可以使用Enumerable.Range
创建10个Point
。
var points = Enumerable.Range(0, 10)
.Select(x => new Point {X = 0, Y = 1})
.ToArray();
Enumerable.Repeat()
- SLaksPoint
是一个值类型,因此不可能进行更改,除非问题的提出者创建了自己的自定义 Point
类。 - Servy这方面没有特别的简写方式。对于数字“3”,只需写三次即可:
Point initial = new Point { X = 0, Y = 1 };
Point[] P = new Point[3] { initial, initial, initial };
System.Drawing.Point
是一个值类型。如果不是这种情况,我会删除这个假设。 - Ry-因为您的问题涉及到固定长度、坐标静态的点数组,所以在这种情况下,不需要在初始化数组时使用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 },
...
};
Point[] points = Enumerable.Repeat<Point>(new Point(0, 1), 3).ToArray();
var
代替指定类型,省略 Repeat
的泛型参数,并删除不必要的空格。 - Servy