c# - 与 oops 概念相关

标签 c# c#-4.0

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

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

这是给定的Circle类

class Circle
{
    int radius;

    double Area()
    {
        return Math.PI * radius * radius;
    }
}

因此,无法访问私有(private)字段,但是当我在控制台项目中尝试类似的操作时,我成功运行它。是不是我们在类中有 main 函数,这就是为什么我可以让 Program 类的对象访问我的私有(private)字段?
class Program 
    {

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

        }
   }

最佳答案

您可以从同一个类中访问私有(private)字段——该类的任何实例都可以访问任何其他实例的私有(private)字段。

所以你可以创建一个 Program并从 Program.Main 中访问其私有(private)字段.

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

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!
   }
}

关于c# - 与 oops 概念相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23266198/

相关文章:

c#-4.0 - TPL异常处理

c# - C#视频编辑器?

c# - 在 Controller (ASP.NET Core)中进行 DI 时如何在 SignalR 中使用 Clients.Caller 和 Clients.Others?

c# - parallel.foreach 有效,但为什么呢?

c# - 在 C# 中,引用数组变量是否更慢?

.net - 即时修改 IL 代码

c# - 检查两个文件名是否引用同一个文件

c#-4.0 - 如何实例化未包含在 C# 项目中的对象?

c# - 将查询转换为 Lambda 表达式

c# - 如何使用 C# 卸载 .dll?