C# 2010 version 4.0を使用しています。
次のようなint型とstring型を混合したMixedという型を定義したいのですが、
public class Mixed
{
private int _TheInt = 0;
public int TheInt
{
get { return _TheInt; }
set { _TheInt = value; }
}
private string _TheString = null;
public string TheString
{
get { return _TheString; }
set { _TheString = value; }
}
public static implicit operator int(Mixed m)
{
return m.TheInt;
}
public static implicit operator Mixed(int x)
{
Mixed m = new Mixed();
m.TheInt = x;
return m;
}
public static implicit operator string(Mixed m)
{
return m.TheString;
}
public static implicit operator Mixed(string x)
{
Mixed m = new Mixed();
m.TheString = x;
return m;
}
}
//Mixed m = 1;
//Console.WriteLine(m); //これだとコンパイルエラーになる
//Console.WriteLine(m.TheInt.ToString()); //「1」と表示される
int i = 1;
Console.WriteLine(i); //「1」と表示される
object o = 1;
Console.WriteLine(o); //「1」と表示される
Console.WriteLineなどで表示する場合に
例えばint型なら
int i = 1;
Console.WriteLine(i); //「1」と表示される
という具合にそのまま「1」と表示されます。
でもこのMixedの場合、
Mixed m = 1;
Console.WriteLine(m.TheInt.ToString()); //「1」と表示される
これでは「1」と表示されるのですが、
Console.WriteLine(m); //これだとコンパイルエラーになる
このやり方だとエラーになります。
なんとかしてint型やobject型のようにToString()を使わずに
表示させることはできないでしょうか?
お礼
ご回答ありがとうございます。 なるほど、参考になりました。