Mặc dù chúng ta viết mã trong C# có quá tải toán tử như vậy, nhưng trình biên dịch C# sẽ phải dịch ra ngôn ngữ trung gian IL để thực thi trên môi trường .NET. Đoạn lệnh đã được biên dịch ra như sau:
1: .assembly
my_namespace {}
2: .class private auto ansi zzz extends [mscorlib]System.Object 3: { 4: .method public hidebysig static void vijay() il managed 5: { 6: .entrypoint 7: .locals (class yyy V_0,class yyy V_1,class yyy V_2) 8: ldc.i4.s 10 9: newobj instance void yyy::.ctor(int32) 10: stloc.0 11: ldc.i4.5 12: newobj instance void yyy::.ctor(int32) 13: stloc.1 14: ldloc.0 15: ldloc.1 16: call class yyy yyy::op_Addition(class yyy,class yyy) 17: stloc.2 18: ldloc.2 19: ldfld int32 yyy::i 20: call void [mscorlib]System.Console::WriteLine(int32) 21: ret 22: ret 23: } 24: } 25: 26: .class public auto ansi yyy extends [mscorlib]System.Object 27: { 28: .field public int32 i 29: .method public hidebysig specialname static class yyy op_Addition(class yyy x,class yyy y) il managed 30: { 31: .locals (class yyy V_0,class yyy V_1) 32: ldarg.0 33: ldfld int32 yyy::i 34: call void [mscorlib]System.Console::WriteLine(int32) 35: ldc.i4.s 12 36: newobj instance void yyy::.ctor(int32) 37: stloc.0 38: ldloc.0 39: stloc.1 40: ldloc.1 41: ret 42: } 43: 44: .method public hidebysig specialname rtspecialname instance void .ctor(int32 j) il managed 45: { 46: ldarg.0 47: call instance void [mscorlib]System.Object::.ctor() 48: ldarg.0 49: ldarg.1 50: stfld int32 yyy::i 51: ret 52: } 53: } |