2

C++ では、最初のオペランド (オブジェクト) がオーバーロード関数を呼び出します。C#で同じことをするのは何ですか? どのオペランド?C# では、たとえば次の+ように両方のオペランドが関数に送信されるためです。

public static Rectangle operator + (Rectangle x,Rectangle y)

そして2つ目の質問。2 つの異なる型 (異なるクラス型のobject1とを考慮) に対してこれを実行したい場合、どこで関数を定義する必要がありますか?object2

4

3 に答える 3

3

あなたの例では、オーバーロードされた演算子はstatic(実際、すべてのオーバーロードされた演算子はC#にあります)であるため、インスタンスメソッドとは異なり、どちらのオペランドもメソッドを呼び出す「1」ではありobject.Equalsませx.Equals(y)x。上の方法。代わりに、この静的メソッド呼び出しを行ったのと同じです。

Rectangle.Add(x, y);

2 つの異なる型がある場合、いずれかのクラスで演算子を定義できますが、両方のクラスで定義することはできません。

于 2013-09-23T20:47:56.713 に答える
0

C# のオペランド構造を理解しているので、どちらのオペランドも演算子を呼び出しません。演算子は、あなたの場合、長方形の引数 x と y を取る関数です

于 2013-09-23T20:49:25.167 に答える