c#中私有和公共访问修饰符的区别

本文关键字:区别 访问 | 更新日期: 2023-09-27 18:04:22

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

namepsace MyNameSpace
{
  class Book
  {
   private string title;
  }
}
那么这意味着实例变量title只能在类中访问,即上面例子中的Book类。 然而,如果我要使实例变量为公共,我已经读到这使得它可以被类外部访问。

我的问题是,这是否也意味着它可以在名称空间之外访问?还是我们仍然在讨论名称空间中的类?我找不到任何能回答我这个问题的资源,所以我想在这里问一下。

c#中私有和公共访问修饰符的区别

名称空间纯粹用于组织,而不是用于可访问性。. net中没有基于名称空间允许/限制对资源的访问的可访问性机制。由于名称空间可以分布在多个程序集中,使成员"对名称空间"私有将不会有效,因为任何人都可以在不同的程序集中编写类,但可以使用相同的名称空间并访问这些成员。

你可以从文档中推断,当讨论可访问性时没有提到命名空间,只有类型和程序集。

一般来说,private表示"只能由包含定义的东西使用"。对成员来说,这就是类;对于类型,它是定义它的"外部"类型(如果有的话)。你不能有顶级private类型,因为名称空间不是真正的"容器",所以没有什么可以使它私有

关于这个的其他问题:

在c#/.NET中只有命名空间的类可见性?

命名空间中的私有类

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

title的完整位置为MyNameSpace::Book::titleNamespaces不限制其成员的可访问性。Namespace给它的成员新的位置。class也是Namespace的一种类型。

例如:

在中国可能有一个号码为123456789的电话。在新加坡也可能有一个号码相同的电话123456789。任何人都可以拨打这些号码。但是为了区分这些不同的数字,我们需要Country Code,有时也需要STD Code。所以这里,Country CodeSTD Code就是Namespace

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

No。这与名称空间无关。名称空间是一个位置。只要你的类被访问,它的public成员也能被访问。