zot*_*tty 4 c# oop function static-libraries
来自Matlab中的非OO背景,我正在寻求以最佳实践方式执行我习惯的一些操作来进行C#.
我有一个类,它从一个源中导入数据,并将其格式化为一个int数组.我想要对这个数组执行一些操作.为了简单起见,我想说我想取所有值的平均值.我看到它的方式,我有三个选择:
double arrayAverage=MyClass.ArrayAve;
我可以开发一个静态类,让我可以访问平均值 double arrayAverage= zotty.arrayMath.average(MyArray);
显然我可以通过某种方式继承或接口,以便我创建一个专门用于执行此类操作的类,然后Id可以通过实例化这个新类并将其传递给数组来访问:
OperatorClass oc = new OperatorClass();
oc.data = MyClass.MyArray;
double arrayAverage = oc.ArrayAverage();
扩展类似乎有风险,因为它还负责导入和格式化数据.如果我将所有数据处理添加到它中,我可能变得非常大,并且对于其他人来说,添加和与我一起工作并不是直截了当的.
未来的代码将需要在阵列上进行更复杂的操作,我不知道它们目前会是什么.我将在未来的程序中使用一些基本操作,这些操作作为静态类的一部分很有用 - 但复杂的操作将是多余的.
用于执行数据处理的单独类允许导入/格式化类保持隔离.它可以提供一般功能和特定功能,但代价是在代码中实例化另一个变量,这在我看来有点凌乱.
如果你对此事有任何想法,我会感激一些意见!
您可以简单地将数组公开为IEnumerable <int>,然后使用任何LINQ方法,例如Average:
MyClass myObject = ...
double a = myObject.Data.Average();
Run Code Online (Sandbox Code Playgroud)
哪里
class MyClass
{
private int[] data;
public IEnumerable<int> Data
{
get
{
return this.data;
}
}
}
Run Code Online (Sandbox Code Playgroud)