1

可能重复:
获取变量或参数的名称

我有这个功能。

public void AddVariable( String str)
{
    Response.Write(str); // will write the value of str
}

但我需要写下传递给函数的字符串变量的名称。

例如:

String temp = "test Variable";
AddVariable(temp);

在这里,我需要在我的函数中获取变量的名称,而不是value

即,我需要在我的函数中获取“ temp ”,而不是“ test Variable ”。

有可能吗?

4

2 回答 2

4

您可以在函数中获取变量的名称(“str”),但您无法获取传递给函数的变量的名称,除非您将其作为第二个参数传入。

获取传递给函数的变量的名称是没有意义的,因为如果传递了诸如AddVariable("test variable").

于 2012-12-28T05:43:59.043 回答
3

您不需要参数名称(可能来自反射),而是需要作为参数传递的变量名称。AFAIK,出于所有实际目的,这对于函数内的代码是不可能的。

另一方面,可以对应用程序域中加载的所有程序集进行代码分析并找到对您的方法的所有调用,然后进行堆栈遍历以确定可能的调用,以便您可以确定变量调用方法中的名称(同样,如果调用方法中可能有很多调用,则很难猜测变量名称,然后您必须依赖 IL 偏移量等),但它太复杂了。

也许,您可以说明此类要求的原因,可以有一些替代方案。例如,您可以在您的方法代码中获取和记录堆栈跟踪,以便进行故障排除。

于 2012-12-28T05:48:08.940 回答