为什么我不能从另一个类调用所有方法?

OHA*_*OHA -1 .net c# access-modifiers

我尝试从另一个类调用一个方法.我添加了引用并找到了类.我可以调用这个类的一些方法但是我不能调用这个类中的所有方法.

主类是public partial class和我想要使用的方法的类private static class.我尝试调用的方法是public static.我可以调用的方法和我不能调用的方法没有区别.这是我不明白的问题.请有人解释一下吗?

namespace MyNamespace2
{
    private static class MyClass
    {
        public static void MyMethod() { }
    }
}

namespace MyNamespace1
{
    class Program
    {
        static void Main(string[] args)
        {
            //can't call
            MyClass.MyMethod();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

sok*_*oku 6

如果您尝试访问的类是私有的,那么它的方法是否公开并不重要,您无法访问该类本身.

以这种方式考虑它.如果你不被允许进入纽约,那么所有的房屋都是在城市内开放并不重要,因为你无法进入这座城市.

然而,要回到代码,有一种情况可以访问私有类:如果调用函数是包含私有类的类的一部分.

如果您可以自由地操作您尝试访问的类的代码,那么您应该尝试类似于此的内容:

class A {
  private static class B {
    public static void Foo() {}
  }

  public void Bar() {
    B.Foo();
  }
}
Run Code Online (Sandbox Code Playgroud)

在此代码中,您可以B.Foo()从任何成员函数调用A,但不能从外部调用A.