私は BigInteger のドキュメントを見ていましたが、BigInteger.Equals(Object obj)
メソッドで以下に出くわしました:
obj パラメーターが BigInteger 値ではなく、暗黙的な変換が定義されているデータ型である場合、Equals(Object) メソッドは、比較を実行する前に obj を BigInteger 値に変換します。
次に、オブジェクトからの変換には明示的なキャストが必要になることを考えると、これをどのように行うのか疑問に思い始めました。私が思いついた最良の方法は次のとおりです。
Type type = obj.GetType()
if(type == typeof(byte))
{
byte b = (byte)obj;
return Equals(b);
}
if(type == typeof(short))
{
short s = (short)obj;
return Equals(s);
}
//Continue for all types that can be implicitly cast to BigInteger.
これを行うには、私が見逃しているより簡単な方法があるように思えます。では、オブジェクトから始めていることを考えると、暗黙的な変換を行うには他にどのような方法がありますか?