Csharp/C#教程:什么样的访问修饰符可以应用于类?分享


什么样的访问修饰符可以应用于类?

经过一番研究后,我确定您可以应用于类的唯一访问修饰符是:

但是下面的错误消息似乎暗示如果一个类没有在命名空间中定义,那么它可以被定义为privateprotectedprotected internal

public和internal是唯一可以在课堂上使用的类修饰符还是更多?

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test2343434 { class Program { static void Main(string[] args) { Tools.ToolManager toolManager = new Tools.ToolManager(); Console.ReadLine(); } } } namespace Tools { //error: Elements defined in a namespace cannot be explicitly //declared as private, protected, or protected internal private class ToolManager { public ToolManager() { Console.WriteLine("inside tool manager"); } } } 

嵌套类型可以声明为private,protected或protected internal。 您仍然可以将嵌套类型声明为public或internal – 只是在嵌套时只能用上面的访问修饰符声明它们:

 public class OuterClass { private class PrivateNested {} protected class ProtectedNested {} protected internal class ProtectedInternalNested {} public class PublicNested {} internal class InternalNested {} } 

请注意,您不能声明嵌套在struct的类型要protectedprotected internal因为这样做没有任何意义:)

 public struct OuterStruct { private class PrivateNested {} public class PublicNested {} internal class InternalNested {} } 

C#不允许类型嵌套在接口中(遗憾的是,IMO – 它对代码契约很有用)。

所有这些对于其他嵌套类型(枚举,结构,接口,委托)也是如此。

看看这个MSDN页面 :

命名空间中的类型声明可以具有公共访问权限或内部访问权限。 如果未指定可访问性,则internal是默认值。

对于命名空间中的类型声明而言,除了公共到外部程序集或内部(C#不支持友元类的概念或类似的东西)之外,没有任何意义。

答案可在辅助function级别中找到。

“顶级”类(即不嵌套在另一个类中)只能是公共的或内部的。 默认情况下(如果您没有声明任何内容),它是内部的。

嵌套类可以具有所有五种可能的可访问级别,即公共,受保护,内部,私有,受保护的内部。

在这个问题的上下文中,可能有趣的是指出,有一种不太知名的机制可以使internal类对其他程序集可见。 该机制是InternalsVisibleTo属性。 它不被认为是任何一个访问修饰符之一,但确实具有操纵谁有权访问的效果。 这个概念被称为朋友集。

上述就是C#学习教程:什么样的访问修饰符可以应用于类?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955985.html

(0)
上一篇 2021年11月22日
下一篇 2021年11月22日

精彩推荐