gpt4 book ai didi

c# - 如何在 C# 中实现对数组执行的 "function"

转载 作者:太空狗 更新时间:2023-10-30 00:12:40 25 4
gpt4 key购买 nike

我没有 Matlab 的 OO 背景,我希望以 C# 的最佳实践方式执行一些我习惯的操作。

我有一个类,它从源导入数据,并将其格式化为一个整数数组等。我将要对该数组执行一些操作。为简单起见,假设我想取所有值的平均值。在我看来,我有三个选择:

  • 数组是 MyClass 的一部分,因此我可以扩展 MyClass 以返回 MyArray 的平均值。double arrayAverage=MyClass.ArrayAve;
  • 我可以开发一个静态类,通过 double arrayAverage= zotty.arrayMath.average(MyArray);

  • 访问平均值
  • 显然有一些方法可以让我继承或接口(interface),这样我就可以创建一个专门用于执行此类操作的类,然后我可以通过实例化这个新类并将数组传递给它来访问它:

OperatorClass oc = new OperatorClass();

oc.data=MyClass.MyArray;

double arrayAverage = oc.ArrayAverage();

扩展类似乎有风险,因为它还负责导入和格式化数据。如果我也将所有数据处理都添加到其中,我可能会变得非常庞大,而且其他人也不会直接添加并与我一起工作。

future 的代码将需要对数组进行更复杂的操作,目前我还不知道它们会是什么。我将在未来的程序中使用一些基本操作,这些操作作为静态类的一部分很有用 - 然而复杂的操作将是多余的。

执行数据处理的单独类允许导入/格式化类保持隔离。它可以同时提供通用功能和特定功能,但代价是在代码中实例化另一个变量,这在我看来有点凌乱。

如果您对此事有任何想法,我将不胜感激!

最佳答案

您可以简单地将数组公开为 IEnumerable ,然后使用任何 LINQ方法,例如 Average :

MyClass myObject = ...

double a = myObject.Data.Average();

在哪里

class MyClass
{
private int[] data;

public IEnumerable<int> Data
{
get
{
return this.data;
}
}
}

关于c# - 如何在 C# 中实现对数组执行的 "function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282231/

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