gpt4 book ai didi

c# - 我们可以使用对象访问私有(private)变量吗

转载 作者:太空狗 更新时间:2023-10-30 00:27:45 25 4
gpt4 key购买 nike

我们无法从在类外部创建的对象访问类的私有(private)变量,但可以在类内部创建同一对象时访问它本身。为什么??

class Program
{
private int i;

public void method1()
{
Program p = new Program();
p.i = 5; // OK when accessed within the class
}

}

class AnotherClass
{

void method2()
{
Program p = new Program();
p.i = 5; //error because private variables cannot be accessed with an object which is created out side the class
}

}

现在我想每个人都明白我的意思了吧??

在上述两种情况下,我们都通过对象“p”访问私有(private)变量“i”。但是课内可以,课外不可以。谁能告诉我这背后的原因??

最佳答案

您可以从类中访问 i,因为私有(private)成员只能由类成员访问。在这种情况下,它看起来很奇怪,因为 p 是与访问变量的对象不同的对象,但它仍然是同一个类,并且限制是在类级别而不是对象级别。

class Program
{
private int i;

public void method1()
{
Program p = new Program();
p.i = 5; // OK when accessed within the class
}

}

你不能从另一个类中访问 i (除非它是一个内部类,但那是另一回事)。这完全符合预期。

class AnotherClass
{
void method2()
{
Program p = new Program();
p.i = 5; //error because private variables cannot be accessed with an object which is created out side the class
}
}

我明白你想表达的意思。类级别的限制看起来很反直觉。也许这是错误的。但是成员变量仍然只能从类内部访问,因此您仍然可以完全控制以保证私有(private)变量的封装。

关于c# - 我们可以使用对象访问私有(private)变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5228825/

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