为什么我不能调用另一个 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();
}
}
我尝试调用另一个 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();
}
}