C# 6.0 引入了 nameof()
运算符,它返回一个字符串,表示放在其中的任何类/函数/方法/局部变量/属性标识符的名称。
如果我有一个像这样的类:
class MyClass
{
public SomeOtherClass MyProperty { get; set; }
public void MyMethod()
{
var aLocalVariable = 12;
}
}
我可以这样使用运算符:
// with class name:
var s = nameof(MyClass); // s == "MyClass"
// with properties:
var s = nameof(MyClass.OneProperty); // s == "OneProperty"
// with methods:
var s = nameof(MyClass.MyMethod); // s == "MyMethod"
// with local variables:
var s = nameof(aLocalVariable); // s == "aLocalVariable".
这很有用,因为正确的字符串在编译时进行检查。 如果我拼写某个属性/方法/变量的名称不正确,编译器将返回错误。 此外,如果我重构代码,所有字符串都会自动更新。 例如,有关实际用例,请参见此文档。
Java中是否有该运算符的等效物?否则,如何实现相同的结果(或类似结果)?
nameof(AffectedProperty)
传递给事件参数对象的相关属性,以通知监听器哪个属性已被更新。这是一种获取属性名称编译时安全性的好方法。 - Abion47