Edw*_*uay 4 c# oop access-modifiers
经过一番研究后,我确定您可以应用于类的唯一访问修饰符是:
但是下面的错误消息似乎暗示如果一个类没有在命名空间中定义,那么它可以被定义为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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套类型可以声明为private,protected或protected internal.您仍然可以将嵌套类型声明为公共或内部 - 只是您只能在嵌套时使用上述访问修饰符声明它们:
public class OuterClass
{
private class PrivateNested {}
protected class ProtectedNested {}
protected internal class ProtectedInternalNested {}
public class PublicNested {}
internal class InternalNested {}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不能声明嵌套在一个类型struct是protected或protected internal因为它没有任何意义,这样做:)
public struct OuterStruct
{
private class PrivateNested {}
public class PublicNested {}
internal class InternalNested {}
}
Run Code Online (Sandbox Code Playgroud)
C#不允许类型嵌套在接口中(遗憾的是,IMO - 它对代码契约很有用).
所有这些对于其他嵌套类型(枚举,结构,接口,委托)也是如此.