私が次のクラスを持っているとしましょう:
class Number{
}
次に、型の変数を宣言しNumber
、inint
またはuint
または任意の種類の変数のような値を指定します。
Number n = 14;
私の質問が良いかどうかはわかりませんが、私はC#を初めて使用するので、助けてください。
このようなケースを処理するために、暗黙的な変換演算子を作成できます。クラスには、暗黙的な変換演算子が呼び出すコンストラクターが必要です。例えば:
class Number
{
public int Value { get; set; }
public Number(int initialValue)
{
Value = initialValue;
}
public static implicit operator Number(int initialValue)
{
return new Number(initialValue);
}
}
次に、ライン
Number n = 14;
実質的に同等になります
Number n = new Number(14);
クラスに演算子を追加して、他の方向にも進むことができます。
public static implicit operator int(Number number)
{
if (number == null) {
// Or do something else (return 0, -1, whatever makes sense in the
// context of your application).
throw new ArgumentNullException("number");
}
return number.Value;
}
暗黙の演算子には注意してください。それらは素晴らしい構文糖衣ですが、コードの特定のチャンクで実際に何が起こっているのかを分かりにくくすることもあります。呼び出すために型キャストを必要とする明示的な演算子を使用することもできます。
int から数値クラスへの暗黙的な変換を作成するには、implicitを調べます。
クラスで演算子をオーバーロードできます。
class Number
{
public static Number operator=(int i)
{
...
}
}
ところで、このような単純で小さなクラスの場合は、クラスではなく構造体を使用することをお勧めします。