Ich frage mich, ob ich 2 Wörterbücher Summe in eins mit Operatorüberladung machen kann, aber ich bin weit weg von der richtigen Modus, um es zu tun, hier ist mein Code.Wörterbücher mit Operator überladen
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;
}
}
Als die Fehlermeldung exp Wenn Sie versuchen, den Operator zu überladen, müssen Operatorüberladungen mindestens einen Parameter vom gleichen Typ wie die übergebene Klasse enthalten. Sie können '+' oder einen anderen Operator in einer Klasse, die Sie nicht geschrieben haben, nicht generell überladen. Sie können diese Klasse natürlich erben und Ihre Überlast dort anlegen. Aber das funktioniert natürlich nur, wenn mindestens einer der Operanden diese abgeleitete Klasse ist. Ehrlich gesagt, bin ich skeptisch gegenüber dem Wert des Überladens von '+' für ein Wörterbuch; Es gibt keine eindeutige Bedeutung für den Betreiber. Eine gut benannte Methode wäre viel schlauer. –
Dann wie könnte ich es mit Methoden machen? –
Was meinst du? Sie schreiben einfach eine Methode mit zwei Parametern, eine für jedes Eingabewörterbuch. Tun Sie, was immer in der Methode ist, die Sie für die "Summe" der Wörterbücher halten, und geben Sie das Ergebnis zurück. Genau wie jede andere Methode. –