Tôi không hiểu tại sao nó hoạt động ...Phép thuật IComparable - tại sao nó là một tuyên bố hợp lệ?
class Program
{
static void Main(string[] args)
{
IComparable.Equals(12, 3);
}
}
Mã 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
Nó biên dịch để bool Object.equals (Object, Object), nhưng tại sao?
Chà, điều đó đã khiến tôi nổi bật trong một giây. Lưu ý rằng nó làm việc với giao diện * any * (lớp, enum và), và cho bất kỳ kiểu tham số nào - tất nhiên (một khi bạn nghĩ về nó). –
Thực sự làm việc với tất cả các giao diện, nhưng lý do đằng sau nó là gì? – boli
Hãy xem câu trả lời của David. –