gpt4 book ai didi

c# - 为什么成员访问修饰符对 nameof() 很重要?

转载 作者:太空宇宙 更新时间:2023-11-03 20:55:30 24 4
gpt4 key购买 nike

我对 nameof() 运算符有点困惑。因此,例如我不能在另一个类的 nameof() 中使用类的私有(private)字段,但我可以使用 publicstatic 字段 using non static property ,所以我不需要实例化对象。

是否始终如一?为什么成员访问修饰符对 nameof() 很重要?

class A
{
private int X;
public int Y;
public A()
{
var x = nameof(A.X);//OK
var y = nameof(A.Y);//OK
}
}
class B
{
public B()
{
var x = nameof(A.X);//Compilation error
var y = nameof(A.Y);//OK
}
}

最佳答案

private 等访问修饰符的目的是隐藏实现细节。他们说“不,你不需要知道这个。这是实现细节”。这就是为什么 nameof 不允许访问私有(private)属性的原因。无论你在哪个类(class),那个类(class)都不应该知道其他类(class)的实现细节。

静态与非静态是不同的。它的目的不是隐藏你不需要知道的东西。它的目的只是区分属于类实例的成员和属于类本身的成员。您在这里只需要该成员的名称,不需要创建实例,那么为什么不允许您这样做呢?请注意,该成员是可访问的,即这不是您不应该知道的事情。

关于c# - 为什么成员访问修饰符对 nameof() 很重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50964548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com