有没有更好的方法将变量的名称作为.NET 4.5中的字符串?

时间:2012-10-31 08:49:40

标签: c# .net reflection .net-4.5

  

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

我希望能够将变量的名称作为字符串。

这可以通过using a parameterless lambda expression有效实现。但是,这会带来性能开销,并且它不是内置功能。<​​/ p>

.NET 4.5提供了CallerMemberNameAttribute来提供调用者的名称作为方法参数。这为我们提供了一种内置的,更好的(在某些情况下)方式来处理特定情况。

.NET 4.5为特定上下文提供了此领域的改进。现在还有一个更好的方法是将任何变量的名称作为字符串吗?

根据要求,这是我想要实现的一般用法示例:

//Assume 'myVariable' is a local variable, member variable, static member variable, constant, parameter or even a property.
string myVariableName = ...; //This should get the string name of myVariable

^更好,我的意思是更快,不需要反射,内置于.NET或更优雅,但最好是这些的组合。

1 个答案:

答案 0 :(得分:3)

没有没有更好/更快的方式。我认为,你链接的expresseion树方式是获取变量名称的唯一方法。

CallerMemberNameAttributeCallerFilePathAttributeCallerLineNumberAttribute是.NET 4.5在该领域引入的唯一新功能。