有谁知道如何将Point值添加到数组中?
答案 0 :(得分:2)
为什么您希望数组的类型为double
?你可以使用Point
数组;
Point[] points = new Point[2];
points[0] = new Point(15,15);
points[1] = new Point(200,220);
double someResult = (points[0].x - points[1].x) * (points[0].y - points[1].y);
或者循环使用它们;
for (int i = 0; i < points.Lenght; i++)
{
// do something with points[i]
}
或列表;
List<Point> points = new List<Point>();
points.Add(new Point(1,1)); //ect
或
List<Point> points = new { new Point(1,1), new point(2,2) //ect };
foreach (Point p in points)
{
// do something with p
}
你可能喜欢循环的一些随机LINQ;
double xTotal = points.Aggregate((c, n) => c.x + n.y); // gives sum or all x values
double yTotal = points.Aggregate((c, n) => c.y + n.y);
当我向数组添加两个Point时,这是否意味着数组将包含4个值?
排序。该数组将包含两个Point
个实例。其中每个都有x
和y
值,但通常你会说数组保持2个值。如果你只是想要组合4个双打,你可能根本不想使用Point
。你可以声明一个像;
public struct Rect
{
double a;
double b;
double c;
double d;
}
让你的4个双打组合得更好。或者你可以使用Tuple<double, double, double, double>
虽然大多数开发人员可能会发现有点奇怪(嘿,我至少喜欢它们)。但是,它是只读的。
var tuple = new Tuple<double, double, double, double(1, 2, 3, 4);
答案 1 :(得分:0)
我建议你宣布一个班级,这里是:
public class Rectangle
{
public Rectangle(Point left, Point right)
{
Left = left;
Right = right;
}
private Point Left{get; set;}
private Point Right{get; set;}
public double CalculateArea()
{
return (points[0].x - points[1].x) * (points[0].y - points[1].y);
}
}
以下是您可以使用它的方法:
var rec = new Rectangle(new Point(15,15), new Point(200,220));
var someResult = rec.CalculateArea();
答案 2 :(得分:0)
一般情况下,重构程序以使用Point数组会更好,因为它具有更多的语义含义。
但如果这是一个真正的矩形(不只是任何四边形,你需要四个点而不是两个),你可以这样做:
public double[] ConvertPointsToArray(Point topLeft, Point bottomRight)
{
var points = new double[4];
points[0] = topLeft.x;
points[1] = topLeft.y;
points[2] = bottomRight.x;
points[3] = bottomRight.y;
return points;
}
然后你可以像这样使用数组:
var points = ConvertPointsToArray(left, right);
var value = (points[0] - points[2]) * (points[1] - points[3]);
但正如你所看到的,你必须知道点如何在数组中编码,并且很容易搞砸。
带有两个点的矩形类会更有用。