使用 Tuple 创建一个方法,该方法接受 Point 对象列表并确定给定列表的 X 和 Y 成员的最小和最大



我需要使用元组使用以下语法创建一个方法。

public static Tuple<double, double, double, double> GetRectangeBounds(List<Point> points)

此处的目标是确定给定列表的 X 和 Y 成员的最小值和最大值。 我创建了一个名为Point的结构。 结构点具有以下构造函数

public struct Point
{
double X;
double Y;
public Point(double x, double y)
{
X = x;
Y = y;
}
public Point(Point other)
{
X = other.X;
Y = other.Y;
}
}

我的问题是如何访问元组中的点,以便我可以比较哪些值是给定列表 X 和 Y 成员的最小值和最大值。 元组方法必须返回以下内容。

return new Tuple<double, double, double, double>(minX, minY, maxX, maxY);

我并不完全清楚你的问题是什么,但你需要做的就是声明四个双变量minXmaxXminYmaxY,将 mins 设置为double.MaxValue,将 maxs 设置为double.MinValue,然后遍历所有点,检查每个 x 和 y,如果其中一个小于 minX 或 minY, 根据需要更新变量。对最大值执行相同的操作。

在循环结束时,你将拥有可以作为元组返回的值。

public static Tuple<double, double, double, double> GetRectangeBounds(List<Point> points) {
double minX = double.MaxValue;
double minY = double.MaxValue;
double maxX = double.MinValue;
double maxY = double.MinValue;
foreach (var point in points) {
minX = Math.Min(minX, point.X);
minY = Math.Min(minY, point.Y);
maxX = Math.Max(maxX, point.X);
maxY = Math.Max(maxY, point.Y);
}
return new Tuple<double, double, double, double>(minX, minY, maxX, maxY);
}

如果这不能回答您的问题,请更新它以使其更清晰。一些示例输入和输出会有所帮助。

请注意,如果静态方法位于Point类的外部,则需要使 X 和 Y 字段public属性,以便使它们在外部可用

public struct Point {
public double X { get; private set; }
public double Y { get; private set; }
public Point(double x, double y) {
X = x;
Y = y;
}
public Point(Point other) {
X = other.X;
Y = other.Y;
}
}

最新更新