=
演算子はオーバーロードできませんが、ここで必要なことを行う方法が必要です。
私は物理学を少しやっているので、量的単位を表すクラスを作成しています。どうやらプリミティブから継承することはできないようですが、クラスがプリミティブとまったく同じように動作するようにしたいと考えています。
だから私は行くことができるだろう、
Velocity ms = 0;
ms = 17.4;
ms += 9.8;
等.
これを行う方法がわかりません。私はちょうどそのようにいくつかのクラスを書くと思った:
class Power
{
private Double Value { get; set; }
//operator overloads for +, -, /, *, =, etc
}
しかし、どうやら代入演算子をオーバーロードすることはできません。この動作を取得する方法はありますか?
クラスではなくstructを使用してから、暗黙的な変換演算子と追加などのさまざまな演算子を作成する必要があるようです。
次にサンプルコードを示します。
public struct Velocity
{
private readonly double value;
public Velocity(double value)
{
this.value = value;
}
public static implicit operator Velocity(double value)
{
return new Velocity(value);
}
public static Velocity operator +(Velocity first, Velocity second)
{
return new Velocity(first.value + second.value);
}
public static Velocity operator -(Velocity first, Velocity second)
{
return new Velocity(first.value - second.value);
}
// TODO: Overload == and !=, implement IEquatable<T>, override
// Equals(object), GetHashCode and ToStrin
}
class Test
{
static void Main()
{
Velocity ms = 0;
ms = 17.4;
// The statement below will perform a conversion of 9.8 to Velocity,
// then call +(Velocity, Velocity)
ms += 9.8;
}
}
(補足として...私はこれが実際に速度をどのように表すかわかりません、確かに方向と大きさが必要です。)