添加点数组

时间:2014-01-29 04:15:04

标签: arrays

有谁知道如何将Point值添加到数组中?

3 个答案:

答案 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个实例。其中每个都有xy值,但通常你会说数组保持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]);

但正如你所看到的,你必须知道点如何在数组中编码,并且很容易搞砸。

带有两个点的矩形类会更有用。