C# Microsoft.NET核心库的某些部分是否隐藏在.dll文件中?
当我查看mscorlib.dll中的一些方法时,它们似乎是空的 我正在阅读有关MSIL的文章,并在VisualStudio中使用IL DASM查看一些类方法。出于好奇,我探究了一些数学课堂方法,发现其中一些是空的 下面是Math.ABS()中的代码 下面是Math.Sin()中的代码 我怀疑它与System.Security.SecuritySafeCriticalAttribute构造函数有关,但我不确定即使在阅读了上面的MSDN页面后,它会做什么,或者为什么会隐藏IL代码 有人对我所看到的有什么见解吗C# Microsoft.NET核心库的某些部分是否隐藏在.dll文件中?,c#,cil,C#,Cil,当我查看mscorlib.dll中的一些方法时,它们似乎是空的 我正在阅读有关MSIL的文章,并在VisualStudio中使用IL DASM查看一些类方法。出于好奇,我探究了一些数学课堂方法,发现其中一些是空的 下面是Math.ABS()中的代码 下面是Math.Sin()中的代码 我怀疑它与System.Security.SecuritySafeCriticalAttribute构造函数有关,但我不确定即使在阅读了上面的MSDN页面后,它会做什么,或者为什么会隐藏IL代码 有人对我所看到的有
感谢您的帮助。internalcall表示该方法是由CLR直接实现的,而不是在IL中实现的。啊,这很有意义。我没有看到。非常感谢。那么,我将进一步研究这个问题。是开始寻找
InternalCall
实现的地方。
.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
.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