我在想...
当我有这样的代码:
lock (obj)
{
MyCode.MyAgent();
}
Run Code Online (Sandbox Code Playgroud)
可以MyAgent包含识别它在lock块下运行的代码吗?
关于什么:
for (int i=0;i<5;i++)
{
MyCode.MyAgent();
}
Run Code Online (Sandbox Code Playgroud)
可以MyAgent包含识别它在loop块下运行的代码吗?
可以询问using块,unsafe代码等同样的问题...... - 你明白了......
这可能在C#中吗?
这只是一个理论问题,我不想做任何事情......只是知识.
这并非完全不可能,您可以使用StackTrace类来获取对调用方法的引用,并使用MethodInfo.GetMethodBody()来获取该方法的IL.
但是你永远不会得到这种可靠性,即时编译器的优化器会让你很难确定呼叫的确切位置.方法体内联将使方法完全消失.循环展开将使得无法了解循环索引.优化器使用cpu寄存器来存储局部变量和方法参数,从而无法获得可靠的变量值.
更不用说反编译IL的锡箔咀嚼工作.这些都不是将参数传递给方法的简单性和速度.