有没有办法在方法和参数中声明所有变量?
我试图在我想要添加到日志的方法中获取所有变量及其值。
我可以使用MethodBase.GetCurrentMethod().GetParameters()
获取方法定义中收到的参数。
这也有一个缺点,我注意到,我必须明确传递特定于方法的东西,以获取参数的值。
我想要的是,我希望以一般方式在方法范围中声明所有变量及其值,而不显式提供任何特定于方法的参数(因为我想为多个方法添加相同的逻辑)。 请有任何想法。
提前致谢。
答案 0 :(得分:1)
你想要达到的目标是不可能的。首先,如果要记录变量在方法中接收的值 all ,请考虑以下代码:
void SomeMethod()
{
int n = 0;
for (;;)
n++;
}
你必须创建一个无限长的日志,这是不可能的。
其次,如果您只想知道变量的初始值而不给参数值,请考虑以下事项:
void SomeMethod(int m)
{
int n = m == 0 ? 1 : 2;
...
}
在不知道m
的价值的情况下,您根本无法知道n
的价值。
第三,即使您拥有所有参数值,并且您只想知道变量的初始值,仍然不可能,一般。实际上,你甚至不知道变量是否会被声明。请考虑以下事项:
void SomeMethod(...some parameters...)
{
...some complex code...
int n = 0; // deep inside some complex control statements
...more complex code...
}
您不能,一般,知道int n = 0;
是否会被执行,因此您无法知道是否会声明变量n
。这是the halting problem的一种形式。