与oops概念相关

Swe*_*tie 1 c# c#-4.0

我有一个非常基本的问题,甚至可以惹恼你,但当我开始阅读Visual c#电子书时,我会想到这一点.

他们提到过::令人惊讶的是,Circle类目前没有实际用途.默认情况下,当您将方法和数据封装在类中时,该类会形成外部世界的边界.类中定义的字段(例如半径)和方法(例如Area)可以通过类中的其他方法看到,但不能被外部世界看到 - 它们是类的私有.因此,虽然您可以在程序中创建Circle对象,但是您无法访问其radius字段或调用其Area方法,这就是为什么该类没有多大用处!但是,您可以使用public修改字段或方法的定义

这是给出的Circle类

class Circle
{
    int radius;

    double Area()
    {
        return Math.PI * radius * radius;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,私有字段是不可访问的,但是当我在我的Console项目中尝试这样的东西时,我正在成功运行它.是否我们在课堂上有主要功能,这就是为什么我可以通过Program类的对象来获取我的私有字段?

class Program 
    {

      int number;
       static void Main(string[] args)
        {
            Program ObjProgram = new Program();
            ObjProgram.number = 10;
            Console.ReadLine();

        }
   }
Run Code Online (Sandbox Code Playgroud)

Blo*_*ard 8

您可以从同一个类中访问私有字段 - 该类的任何实例都可以访问任何其他实例的私有字段.

因此,您可以Program从内部创建并访问其私有字段Program.Main.

如果你从另一个类的方法尝试它,它将无法正常工作.

class Program 
{
   int number;

   static void Main(string[] args)
   {
        Program ObjProgram = new Program();
        ObjProgram.number = 10;                // works fine
        Console.ReadLine();
   }
}

class SomeOtherClass
{
   void SomeMethod()
   {
        Program program = new Program();
        program.number = 10;                  // does not compile!
   }
}
Run Code Online (Sandbox Code Playgroud)