繁体   English   中英

C#中的私有访问修饰符和公共访问修饰符之间的区别?

[英]Difference between private and public access modifier in C#?

我了解如果要使用私有访问修饰符,例如:

namepsace MyNameSpace
{
  class Book
  {
   private string title;
  }
}

然后,这意味着实例变量标题仅可从上述示例中的类(即Book类)内部访问。

但是,如果我要使实例变量成为public ,则我已经读到这使得类外部可以访问它。

我的问题是,这是否也意味着它可以在名称空间之外访问? 还是我们还在谈论命名空间中的类? 我找不到任何资源可以回答我的这个问题,因此想在这里提出。

命名空间仅用于组织,而不用于可访问性。 .NET中没有可访问性机制,该机制允许/限制基于名称空间的资源访问。 由于命名空间可以分布在多个程序集中,因此将成员私有化为“命名空间”将是无效的,因为任何人都可以在不同的程序集中编写一个类,但使用相同的命名空间并访问那些成员。

您可以从文档中推断出这一点, 该文档在讨论可访问性时仅提及类型和程序集,而没有提及名称空间。

通常, private表示“只能由包含定义的事物使用”。 对于成员来说,那是课程; 对于类型,定义它的是“外部”类型(如果有的话)。 你不能有一个顶级private类型,因为命名空间是不是真正的“集装箱”,所以没有什么让它私有

解决此问题的其他问题:

仅命名空间在C#/。NET中具有类可见性?

命名空间内的私有类

如何使基础结构代码仅在名称空间中可见?

title完整位置是MyNameSpace::Book::title Namespaces不限制其成员的可访问性。 Namespace为其成员提供新的位置。 class也是Namespace

例如:

在中国,可能会有电话号码123456789 同样在新加坡,可能会有电话号码为123456789的电话。 任何人都可以拨打这些号码。 但是要区分这些不同的数字,我们需要Country Code ,有时还需要STD Code 因此,此处的Country CodeSTD CodeNamespace

class的成员class public不会影响其在Namespace之外的可访问性。 但是,成员访问应该通过类的对象有效。

不,这与名称空间无关。 命名空间是一个位置。 只要您的班级可以访问,它的公共成员也将可以被访问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM