【发布时间】:2022-11-17 07:50:37
【问题描述】:
不知道我说的是否有道理,如果没有,这是我的意思的一个例子:
我创建了一个执行“标量矩阵”乘法的方法,也就是二维数组的每个元素都乘以一个标量(乘以小数)。现在,无论您执行 array * decimal 还是 decimal * array 都没有关系,无论哪种方式,您都应该得到相同的答案。到目前为止,这就是我所拥有的:
public static double[,] ScalarMatrixMult(double[,] A, double n)
{
for (int i = 0; i < A.GetLength(0); i++)
{
for (int j = 0; j < A.GetLength(1); j++)
{
A[i, j] = A[i, j] * n ;
}
}
return A;
}
public static double[,] ScalarMatrixMult2(double n, double[,] A)
{
for (int i = 0; i < A.GetLength(0); i++)
{
for (int j = 0; j < A.GetLength(1); j++)
{
A[i, j] = A[i, j] * n;
}
}
return A;
}
我有 2 种不同的方法来做完全相同的事情......因为它们关心参数的位置。
我能以某种方式在一种方法中捕捉到“不关心参数位置”的想法吗?或者也许我可以在另一个里面使用其中一个?我真的想避免为本质上相同的事物使用 2 个不同的名称(以及复制粘贴代码 sn-ps)。
【问题讨论】:
-
C# 编译器不会简单地将参数与基于类型的参数进行匹配。如果你有两个参数都是
doubles 怎么办?如果您传递的其中一个东西不是double但它可以隐式转换为它怎么办?不,C# 要求您以相同的顺序或按名称指定它们,以便它们可以相应地匹配。 -
超载,我一定会进一步研究,感谢您提供的信息!
标签: c# matrix methods parameters