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

Why I can't call all Methods from another class?

我尝试调用另一个 class 的方法。我添加了参考并找到了 class。我可以调用此 class 的某些方法,但无法调用此 class 中的所有方法。

主要的 class 是 public partial class 而 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();
        }
    }
}

如果您尝试访问的 class 是私有的,那么它的方法是否 public 并不重要,您无法访问 class 本身。

这样想。如果你不被允许进入纽约,即使所有的房子都在城内开放也没有关系,因为你不能进入城市本身

回到代码,但是在某些情况下您可以访问私有 classes:如果调用函数是包含您的私有 class 的 class 的一部分.

如果您可以自由操纵您尝试访问的 class 的代码,那么您应该尝试类似的操作:

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

  public void Bar() {
    B.Foo();
  }
}

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

外部调用

你写了

i want to use is private static class

您的私有 class 及其方法、属性和字段不可用,即使它们本身具有 public 修饰符。 你必须阅读这个article

但是如果你能移动你的私人 class 试试这个:

class Program
{
    private static class Test
    {
        public static void Foo() { }
    }

    static void Main(string[] args)
    {
        Test.Foo();
    }
}