Некоторые методы внутри mscorlib.dll кажутся пустыми, когда я их просматриваю.
Я читал о MSIL и использовал IL DASM в Visual Studio для просмотра некоторых методов класса. Из любопытства я начал изучать некоторые методы класса Math и обнаружил, что некоторые из них пусты.
Вот код из Math.ABS () ...
.method public hidebysig static int32 Abs(int32 'value') cil managed
{
.custom instance void __DynamicallyInvokableAttribute::.ctor() = ( 01 00 00 00 )
// Code size 13 (0xd)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldc.i4.0
IL_0002: blt.s IL_0006
IL_0004: ldarg.0
IL_0005: ret
IL_0006: ldarg.0
IL_0007: call int32 System.Math::AbsHelper(int32)
IL_000c: ret
} // end of method Math::Abs
А вот код, найденный в Math.Sin () ...
.method public hidebysig static float64 Sin(float64 a) cil managed internalcall
{
.custom instance void System.Security.SecuritySafeCriticalAttribute::.ctor() = ( 01 00 00 00 )
.custom instance void __DynamicallyInvokableAttribute::.ctor() = ( 01 00 00 00 )
} // end of method Math::Sin
У меня есть подозрение, что это связано с этим конструктором System.Security.SecuritySafeCriticalAttribute, но я не уверен, что он делает даже после прочтения на нем страницы MSDN или почему он скрывает код IL.
У кого-нибудь есть понимание того, что я вижу?
Спасибо за вашу помощь.