获取传递给function的参数的名称

时间:2012-12-28 05:40:33

标签: c# asp.net

  

可能重复:
  get name of a variable or parameter

我有这个功能。

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

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

例如:

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

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

即,我需要在我的函数中获得' temp ',而不是'测试变量'。

可能吗?

2 个答案:

答案 0 :(得分:4)

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

获取传递给函数的变量的名称是没有意义的,因为如果传递了文字,例如AddVariable("test variable"),甚至可能没有变量。

答案 1 :(得分:3)

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

另一方面,可以对app-domain中加载的所有程序集进行代码分析,并查找对方法的所有调用,然后执行stack-walk以确定可能的调用,以便您可以在调用方法中修改变量名称(再次,如果在调用方法中可能有很多调用,很难猜测变量名称,然后你必须依赖IL偏移等),但它太复杂了。

也许,你可以说出这种要求的原因,可以有一些替代方案。例如,您可以在方法代码中获取并记录堆栈跟踪,这可用于解决问题。