これをC#で再現しようとしています。
私が得る問題は、コンストラクターを使用する場合、(冗長にするために) したくない new MyInt を使用する必要があることです。これを回避するには、暗黙的/明示的な演算子を使用します。ただし、公開する必要があります...これをC#の機能に実装するにはどうすればよいですか?
短い質問は、バイト/ショートを関数に渡したいのですが、int には渡しません。int を渡すと、コンパイル エラーが発生するはずです。public Implicit int 演算子を使用してランタイムを簡単に取得できることはわかっています。以下のコードは、int が自動的に char に変換されることを示しています。
実行中のサンプルは true を示しています
using System;
class Program
{
public static void Write(MyInt v)
{
Console.WriteLine("{0}", v.v is byte);
}
static void Main(string[] args)
{
Write(2);
}
}
public struct MyInt
{
public object v;
public MyInt(byte vv) { v = vv; }
public MyInt(short vv) { v = vv; }
public MyInt(byte[] vv) { v = vv; }
public static implicit operator MyInt(byte vv) { return new MyInt { v = vv }; }
//public static extern implicit operator MyInt(int vv);
}
役に立たないコードがさらにあります。C++ ソリューションでは不要な MyInt2/MyInt を実装します。