我希望能够将变量的名称作为字符串。
这可以通过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或更优雅,但最好是这些的组合。
答案 0 :(得分:3)
没有没有更好/更快的方式。我认为,你链接的expresseion树方式是获取变量名称的唯一方法。
CallerMemberNameAttribute
,CallerFilePathAttribute
,CallerLineNumberAttribute
是.NET 4.5在该领域引入的唯一新功能。