int32 oldNum, int32 newNum) cil managed 3 { 4 .custom instance void [System.Core] 5 System.Runtime.CompilerServices.ExtensionAttribute....0 16 IL_0008: ret 17 } // end of method ExpandInt::AddToOldNum 发现它和一般的静态方法没什么区别,唯一不同的是多了一行调用[System.Runtime.CompilerServices.ExtensionAttribute...]: custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute::.ctor() = (...01 00 00 00 ) MSDN告诉我System.Runtime.CompilerServices.ExtensionAttribute表明一个法是一种可拓方法, 或一个类或集合包含扩展方法【
Artech.ExtensionMethod.Vector v, class Artech.ExtensionMethod.Vector v1) cil managed { .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute...通过比较,我们发现和上面定义的一般的Static Method生成的IL唯一的区别就是:在Adds方法定义最开始添加了下面一段代码: .custom instance void [System.Core]System.Runtime.CompilerServices.ExtensionAttribute...::.ctor() = ( 01 00 00 00 ) 这段添加的IL代码很明显,就是在Adds方法上添加一个Customer Attribute:System.Runtime.CompilerServices.ExtensionAttribute...Adds(Vector v, Vector v1) { return new Vector { X = v.X + v1.X, Y = v.Y + v1.Y }; } 但是,System.Runtime.CompilerServices.ExtensionAttribute...所以当我们将System.Runtime.CompilerServices.ExtensionAttribute直接运用到Adds方法会出现下面的Compile Error: Do not use 'System.Runtime.CompilerServices.ExtensionAttribute
TestExtension.StringExtension extends [System.Runtime]System.Object { .custom instance void [System.Runtime]System.Runtime.CompilerServices.ExtensionAttribute...( string str ) cil managed { .custom instance void [System.Runtime]System.Runtime.CompilerServices.ExtensionAttribute
领取专属 10元无门槛券
手把手带您无忧上云