【发布时间】:2017-05-29 22:53:34
【问题描述】:
我想知道是否可以使用运算符重载将 2 个字典合为一个,但我远离正确的模式,这是我的代码。
class Program
{
static void Main(string[] args)
{
int[] array1key = new int[] { 0, 1, 3, 7 };
int[] array1values = new int[] { 5, 7, -3, 9 };
int[] array2key = new int[] { 0, 2 };
int[] array2values = new int[] { 2, 4 };
Dictionary<int, int> Polinomio1 = new Dictionary<int, int>();
Dictionary<int, int> Polinomio2 = new Dictionary<int, int>();
for (int i = 0; i < array1key.Length; i++)
{
Polinomio1.Add(array1key[i], array1values[i]);
}
for (int i = 0; i < array2key.Length; i++)
{
Polinomio2.Add(array2key[i], array2values[i]);
}
Dictionary<int, int> Sumar = Polinomio1 + Polinomio2;
}
}
class Polinomio
{
public Dictionary<int,int> Polinomio1 = new Dictionary<int,int>();
public static Dictionary<int,int> operator + (Dictionary<int,int>
Polinomio1,Dictionary<int,int> Polinomio2)
{
return Polinomio1 + Polinomio2;
}
}
【问题讨论】:
-
正如错误消息所解释的,当您尝试重载运算符时,运算符重载必须包含至少一个与传入的类具有相同类型的参数。您通常不能重载
+或您没有编写的课程上的任何其他运算符。当然,您可以继承该类并将重载放在那里。但当然,只有当至少有一个操作数是该派生类时,它才会起作用。坦率地说,我对字典重载+的价值持怀疑态度。对于操作员来说,没有单一的、明显的含义。一个命名良好的方法会更聪明。 -
那我怎么能用方法呢?
-
什么意思?您只需编写一个带有两个参数的方法,每个输入字典一个。做任何你认为是字典“总和”的方法,并返回结果。就像任何其他方法一样。
标签: c# dictionary operator-overloading .net-standard