0

我想定义一个“+”,这样我就可以添加一个双精度数组和一个双精度数组:

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。我试过了,但是编译错误。这是否意味着没有办法完成这项任务?'+' 只能应用于两个相同类型的操作数?

4

2 回答 2

4

你可以做:

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

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

于 2013-10-28T19:15:00.880 回答
0

就个人而言,我非常喜欢@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
于 2013-10-28T19:37:05.100 回答