...IComparable magic - なぜそれは有効なステートメントですか?それが働いている理由を私は理解していない
class Program
{
static void Main(string[] args)
{
IComparable.Equals(12, 3);
}
}
ILコード:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 21 (0x15)
.maxstack 8
IL_0000: nop
IL_0001: ldc.i4.s 12
IL_0003: box [mscorlib]System.Int32
IL_0008: ldc.i4.3
IL_0009: box [mscorlib]System.Int32
IL_000e: call bool [mscorlib]System.Object::Equals(object,
object)
IL_0013: pop
IL_0014: ret
} // end of method Program::Main
通常、Object.equals(オブジェクト、オブジェクト)をBOOLにコンパイルが、なぜ?
うわー、それは私をうまくやってくれました。 *任意の*(クラス、列挙型)インターフェイス、および任意のパラメータタイプ(もちろんそれについて考える)で動作することに注意してください。 –
実際、すべてのインターフェイスで動作しますが、その理由は何ですか? – boli
ダビデの答えをよく見てください。 –