当我查看它们时,mscorlib.dll中的某些方法似乎为空。
我正在阅读有关MSIL的文章,并在Visual Studio中使用IL DASM浏览一些类方法。出于好奇,我去研究了一些Math类方法,发现其中一些是空的。
这是Math.ABS()中的代码...
#include <iostream>
#include <iomanip>
#include <algorithm>
using namespace std;
int main()
{
int number;
cout<<"Please enter the number of test scores you wish to record
provided that it does not exceed 50 \n";
cin>> number;
while(number>50)
{
cout<<"ERROR You cannot use a number greater than 50\n";
break;
}
while(number<=50)
{
float testScores[number];
int counter =0;
while(counter<number)
{
cout<<"Enter the individual test scores";
cin>> testScores[counter];
counter++;
}
}
return 0;
}
这是在Math.Sin()中找到的代码...
.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
我怀疑它与该System.Security.SecuritySafeCriticalAttribute构造函数有关,但是即使在阅读了MSDN页面之后,还是不确定为什么它会隐藏IL代码,我仍不确定这样做。
有人对我所看到的有任何见识吗?
感谢您的帮助。
答案 0 :(得分:1)
internalcall
表示该方法直接由CLR实现,而不是在IL中实现。