C# の変換演算子、キャスト

C# でクラスに独自の変換を実装する場合、変換が成功することが保証されていて、何の情報も失われないならば、キーワード implicit を使いましょう。そうでなければ、explicit を使いましょう。

public class Fraction //!<分数クラス
{
  private int numerator, denominator;

  public Fraction(int n, int d) //!<分数で初期化
  {
    numerator = n;
    denominator = d;
  }
  public Fraction(int n) //!<整数で初期化
  {
    numerator = n;
    denominator = 1;
  }

  public static implicit operator Fraction(int i) //!<暗黙的な変換
  {
    return new Fraction(i);
  }
  public static explicit operator int(Fraction f) //!<明示的な変換、これによってユーザに情報が欠落することを意識させる
  {
    return f.numerator / f.denominator;
  }
}