使用Public方法的私有类?

San*_*ndy 10 c# class access-modifiers public-method

这是一段代码:

private class myClass
{
   public static void Main()
   {

   }
}

        'or'

private class myClass
{
   public void method()
   {

   }
}
Run Code Online (Sandbox Code Playgroud)

我知道,第一个不行.第二个会.

但为什么首先不工作?它有什么具体原因吗?

实际上从这个角度寻找解决方案,这就是为什么要大胆.抱歉

Ric*_*ett 13

在这种情况下这将是有意义的; 你有一个公共类SomeClass,你想在其中封装一些只与之相关的功能SomeClass.您可以通过在其中声明一个私有类(SomePrivateClass在我的示例中)来完成此操作SomeClass,如下所示.

public class SomeClass
{
    private class SomePrivateClass
    {
        public void DoSomething()
        {

        }
    }

    // Only SomeClass has access to SomePrivateClass,
    // and can access its public methods, properties etc
}
Run Code Online (Sandbox Code Playgroud)

这也是如此,无论是否SomePrivateClassstatic,或者包含public static方法.

我将其称为嵌套类,并在另一个StackOverflow线程中进行探索.

  • “只有 SomeClass 可以访问 [...] 其公共方法。” - 不太准确。如果您将嵌套私有类的引用提供给外部类之外的某个人,它也将可以访问这些公共方法(请参阅我的答案以获取示例)。 (2认同)
  • 阿伦说的很好。但是,在这种情况下,您将提供对实现公共接口的私有类的实例的引用。因此,“外面的人”正在通过提供的接口访问私有类,它没有私有类本身的明确知识。 (2认同)