私は2つのKeyValuePair変数を持っているとしましょう。C#でKeyValuePair stuct演算子を拡張するには?
KeyValuePair<string, double> kv1 = new KeyValuePair<string, double>("a", 5);
KeyValuePair<string, double> kv2 = new KeyValuePair<string, double>("b", 7);
"KeyValuePair"構造体に+演算の定義はありません。
だから私は演算子のオーバーロードを使用したい!
私の目標は、のような第三KeyValuePair型変数を取得することです:
KeyValuePair<string, double> kv1 = new KeyValuePair<string, double>(kv1.Key + " + " + kv2.Key, kv1.Value + kv2.Value);
を、結果は次のようになります。
KeyValuePair<string, double>("a + b", 12)
しかし、どのように「演算子」を使用してそれを行うには教えてください?
私はこの方法のようにそれをやろうとした:あなたができることを意味 「パラメータの少なくとも一方がForm1のあるべき」
:
public partial class Form1 : Form
{
public Form1()
{
KeyValuePair<string, double> kv1 = new KeyValuePair<string, double>("a", 5);
KeyValuePair<string, double> kv2 = new KeyValuePair<string, double>("b", 7);
KeyValuePair<string, double> k = kv1 + kv2;
}
public static KeyValuePair<string, double> operator +(KeyValuePair<string, double> c1, KeyValuePair<string, double> c2) => new KeyValuePair<string, double>(c1.Key + " + " + c2.Key, c1.Value + c2.Value);
}
しかし、というエラーメッセージがありますForm.From1の入力のための演算子を作成するだけ... 私はKeyValuePairクラスを拡張すると思った!
しかし、 "KeyValuePair"は構造体ですが、クラスではありません。
"KeyValuePair"構造体から継承する新しい構造体を作成できますか?
どうすればいいですか?
ありがとうございます!
私は '' a "+" b "'が '' a + b ''ではなく' 'ab'' 'を生成すると期待しています...どちらにせよ、演算子のオーバーロードを望むなら、自分のタイプ。演算子のオーバーロードを必要とし、 'KeyValuePair'を使用する必要がある場合、(明示的および/または暗黙的な)[変換演算子](https://msdn.microsoft.com/en-us/library/85w54y0a.aspx)を独自の型と 'KeyValuePair'間の変換を容易にします。 –