概念的な質問のビット:オペレータのC#でのオーバーロード - 実際のコードコードはどこに行くべきですか?
Vector3(3 int値)の静脈内にカスタム構造を作成していますが、標準の演算子(+、 - 、*、/)をオーバーロードしていました。 == etc ...)
私は外部使用のためのライブラリを構築しているので、私はFxCopの規則に従おうとしています。したがって、同じ機能を実行するメソッドを持つことをお勧めします。
例: .Add()、.Subtract()など...
コードの重複を避けるために、これらのメソッドの1つ(演算子のオーバーロードまたは実際のメソッド)がもう1つを呼び出すことになります。
私の質問は、どちらを呼び出す必要がありますか?
は、それは(これが唯一のコード例です):
A)
public static MyStruct operator +(MyStruct struc1, MyStruct struct2)
{
return struc1.Add(struct2);
}
public MyStruct Add(MyStruct other)
{
return new MyStruct (
this.X + other.X,
this.Y + other.Y,
this.Z + other.Z);
}
か:
B)
public static MyStruct operator +(MyStruct struc1, MyStruct struct2)
{
return new MyStruct (
struct1.X + struct2.X,
struct1.Y + struct2.Y,
struct1.Z + struct2.Z);
}
public MyStruct Add(MyStruct other)
{
return this + other;
}
私は本当にわからないんだけどいずれかが望ましいですが、私はいくつかの意見を探しています:)
なぜ2つのパラメータを使用してスタティックではなく、メソッドインスタンスをベースにしましたか?それはFxCopが薦めたものですか? –