我理解使用nameof()
运算符进行异常处理,日志记录等。但我不明白下面直接来自某些Microsoft代码的示例。
public static class SessionKeys
{
public static class Login
{
public static string AccessToken = nameof(AccessToken);
public static string UserInfo = nameof(UserInfo);
}
}
这比
更有用public static class SessionKeys
{
public static class Login
{
public static string AccessToken = "AccessToken";
public static string UserInfo = "UserInfo";
}
}
答案 0 :(得分:15)
nameof
是在编译时进行评估的运算符,因此一旦编译了应用程序,这两个解决方案之间实际上没有区别。
但是,在这种情况下使用nameof
有一些好处:
答案 1 :(得分:6)
非常简单,第一个示例从引用的变量名称派生赋值,而第二个示例从任意字符串派生值,该字符串可能与变量名称匹配,也可能不匹配。
因此,如果您重构变量的名称,那么与这些变量关联的值也会在第一个示例中自动更新,而您必须确保更新字符串值在第二个例子中。
值得注意的是,两者都编译到引擎盖下的同一个IL,将静态字段的值推送到评估堆栈(根据LinqPad):
IL_0001: ldsfld UserQuery+SessionKeys+Login.AccessToken