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

时间:2016-06-06 15:26:07

标签: c# .net 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();
        }
    }
}

2 个答案:

答案 0 :(得分:6)

如果您尝试访问的课程是私密的,那么如果其方法是公开的,那么您无法访问该课程。

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

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

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

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

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

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

答案 1 :(得分:2)

你已经写过了

  

我想使用的是私有静态类

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

但是如果你能够移动你的私人课程,试试这个:

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

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