c# - 在 .NET 4.5 中是否有更好的方法将变量名称作为字符串获取?

标签 c# .net reflection .net-4.5

<分区>

Possible Duplicate:
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 或更优雅,但最好是这些的组合。

最佳答案

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

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

关于c# - 在 .NET 4.5 中是否有更好的方法将变量名称作为字符串获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154191/

相关文章:

c# - 获取 C# 类型的 XSD 架构

c# - ASP.NET core中的kestrel服务器可以在启动时配置空闲超时吗

c# - 当 Windows 从 sleep 模式唤醒时启动应用程序

c# - 使用 LINQ 将对象集合转换为字典

c# - 以图像的实际大小获取鼠标的真实位置,而不是鼠标在 PictureBox 中的位置

c# - 对象与 GUI 控件同步

c# - await 语句与表达式

c# - 如何以编程方式重建现有程序集?

reflection - 使用 Reflection.Emit 生成可识别联合

c# - 使用反射在谓词中引用类的属性