gpt4 book ai didi

c# - 有效处理 C# 方法中的单个值和多个值

转载 作者:行者123 更新时间:2023-11-30 18:52:17 27 4
gpt4 key购买 nike

我有这样的方法:

AverageAndDoSomeMath (Point2)

我想知道如何处理:

AverageAndDoSomeMath (Point2) // single
AverageAndDoSomeMath (Point2 collection) // multiple

最好使用单一实现。

对于集合,我打算使用 IEnumerable 类型,这样我就可以传递任何类型的集合,但是对于单个值,我不想将其包装并作为集合传递,因为集合本身没有任何作用,除了满足类型。

如何以最清晰、最快、最有效的方式最好地处理它?<​​/p>

编辑:也许我应该选择一个更好的方法名称,但该方法计算所有点的平均值,对于 1 个值它没有意义,但可以认为该值将用于表示计算另一个值,但重要的是找到平均值,所以我不能调用第一个方法。

最佳答案

我知道你说过你不想包装它并将它作为一个集合传递,但是有两种方法可以轻松地做到这一点,所以我会发布它们以防你不知道其中一种.

你可以在你的方法上使用参数:

public void Average(params Point2[] points)

之后您可以使用任意数量的参数或数组调用它:

Average(P1);
Average(P2, P3, P4);
Average(); // this one becomes an empty array in the method

Point[] array = new Point[] { P1, P2, P3, P4 };
Average(array);

或者,您可以使用短数组语法来包装您的对象:

Average({ P1 }); // this is legal C# for making an array with 1 element

编辑:阅读您的笔记后,我建议使用参数数组是执行您想要的操作的最清晰方法。它唯一真正的缺点是你不能传入 IEnumerable<Point2>。 (或其他集合,如 List<Point2> )无需先调用 ToArray() ,因为它只需要实际的数组。

关于c# - 有效处理 C# 方法中的单个值和多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com