我想定义一个“+”,这样我就可以添加一个双精度数组和一个双精度数组:
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。我试过了,但是编译错误。这是否意味着没有办法完成这项任务?'+' 只能应用于两个相同类型的操作数?
我想定义一个“+”,这样我就可以添加一个双精度数组和一个双精度数组:
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。我试过了,但是编译错误。这是否意味着没有办法完成这项任务?'+' 只能应用于两个相同类型的操作数?
你可以做:
double[] x = { 1.2, 1.4, 1.8 };
double[] y = x.Select(r => r + 0.3).ToArray();
这将添加0.3
到 中的每个元素x
,但是如果您想重载+
运算符,请查看运算符重载
就个人而言,我非常喜欢@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