什么样的访问修饰符可以应用于类?
经过一番研究后,我确定您可以应用于类的唯一访问修饰符是:
但是下面的错误消息似乎暗示如果一个类没有在命名空间中定义,那么它可以被定义为private , protected或protected 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
的类型要protected
或protected 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