Tài liệu C Sharp part6 pdf

3 320 0
Tài liệu C Sharp part6 pdf

Đang tải... (xem toàn văn)

Thông tin tài liệu

Ví dụ về quá tải toán tử trong C#: Quote: 1: public class zzz 2: { 3: public static void Main() 4: { 5: yyy a = new yyy(10); 6: yyy b = new yyy(5); 7: yyy c; 8: c = a + b ; 9: System.Console.WriteLine(c.i); 10: } 11: } 12: 13: public class yyy 14: { 15: public int i; 16: public yyy(int j) 17: { 18: i = j; 19: } 20: 21: public static yyy operator + (yyy x , yyy y) 22: { 23: System.Console.WriteLine(x.i); 24: yyy z = new yyy(12); 25: return z; 26: } 27: } 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: Quote: 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: } Nortonxe(UDS) . .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. 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

Ngày đăng: 15/12/2013, 02:15

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan