我可以定义一个重载的“+”,在 C# 中添加一个双精度和一个数组吗?

本文关键字:一个 双精度 添加 数组 重载 定义 我可以 | 更新日期: 2023-09-27 18:37:22

我想定义一个'+',以便我可以添加一个双精度数组和一个双精度数组:

double[] x = {1.2, 1.4, 1.8};
double[] y = new double[3];
y = x + 0.3;

结果 y 应等于 {1.5, 1.7, 2.1}.也就是说,x 的每个元素加 0.3。我试过了,但编译错误。这是否意味着没有办法完成这项任务?"+"只能应用于两个相同类型的操作数?

我可以定义一个重载的“+”,在 C# 中添加一个双精度和一个数组吗?

你可以做:

double[] x = { 1.2, 1.4, 1.8 };
double[] y = x.Select(r => r + 0.3).ToArray();

这将为x中的每个元素添加0.3,但是如果您想重载运算符+请查看运算符重载

就个人而言,我非常喜欢@Habib提出的解决方案。为了多样化,我将概述一个替代解决方案。

如果你发现自己在处理向量和矩阵(即一维和二维数组)时工作很多,那么你可能会发现 Accord.Math 库中的许多扩展方法都很有用。可以使用NuGet安装它,如下所示:

Install-Package Accord.Math

然后将using声明添加到类中,以使扩展方法发挥作用

using Accord.Math;

现在,您可以向向量(数组)中的每个元素添加一个标量,如下所示:

double[] x = {1.2, 1.4, 1.8};
double[] y = x.Add(0.3);
Console.WriteLine(y.ToString(DefaultMatrixFormatProvider.CurrentCulture));

哪些输出

1.5 
1.7 
2.1