我试图找出为什么我无法访问课堂计划中的私人领域?
class Program
{
int marks;
static void Main(string[] args)
{
Program p = new Program();
int s = p.marks;
Console.Read();
}
}
答案 0 :(得分:2)
因为您是在同一类型中引用它。如果您使用私有字段创建了其他类型,则无法在Program
类型中访问它。
这打破了封装规则吗? - LearningMath
没有。封装是通过定义类型完成的。方法Main
和字段marks
都存在于同一类型Program
中。
答案 1 :(得分:2)
您可以访问声明它的范围(类)中的私有字段<div class="target">Hover over me</div>
- 在您的情况下是类marks
。
如果它是静态方法或类的其他实例,则无关紧要。以下也很完美
Program
答案 2 :(得分:2)
请参阅private:
私人会员只能在班级或团体内访问 声明它们的结构
您的变量在类int pn53x_transceive(struct nfc_device *pnd, const uint8_t *pbtTx, const size_t szTx, uint8_t *pbtRx, const size_t szRxLen, int timeout);
中声明,这是您从中访问它的位置。
答案 3 :(得分:1)
Main()
方法是Program
类型的成员,因此可以访问private
个成员。
答案 4 :(得分:0)
最简单的思考方式是,创建的对象与创建的类的类型相同。
澄清访问私有成员的有用性的另一件事就是在这种情况下,想想在你想要通过实现IClonable进行深度克隆的情况下,那么你可能需要复制所有的值对象包括私人成员。如果无法访问私有成员,则可能无法完全(深入)执行克隆。
此外,这篇文章:https://stackoverflow.com/a/5231603/2696230提到了一个深思熟虑的观点,即
限制是在类级别而不是在对象级别。
换句话说,私有成员在类之外是不可访问的,而不是在内部,因为在这里你仍然在类中与创建对象的类型相同的情况。
答案 5 :(得分:0)
因为如果你在另一个类中,你仍然在同一个Program类中,你的代码可以工作,并且可以操作这段代码来完成这项工作但不推荐