Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何隐藏静态方法_C#_Polymorphism_Static Methods - Fatal编程技术网

C# 如何隐藏静态方法

C# 如何隐藏静态方法,c#,polymorphism,static-methods,C#,Polymorphism,Static Methods,假设我有一门课,像这样: class A { public static int Count() } class B : A { } class C : A { } 我怎样才能为B类隐藏这个静态方法而不为C类隐藏这个静态方法呢?基本上你不能。见鬼,如果它是公共的,那么任何人都可以打电话给它 您可以使它受到保护,这将允许从B或C内部调用它,但不能从其他地方调用它。。。但是您仍然无法区分B和C。您可以通过创建另一个继承A的类来实现这一点,我们称之为Special。然后您将使C从Special

假设我有一门课,像这样:

class A
{
   public static int Count()
}
class B : A
{
}
class C : A
{
}

我怎样才能为B类隐藏这个静态方法而不为C类隐藏这个静态方法呢?

基本上你不能。见鬼,如果它是公共的,那么任何人都可以打电话给它


您可以使它受到保护,这将允许从B或C内部调用它,但不能从其他地方调用它。。。但是您仍然无法区分B和C。

您可以通过创建另一个继承A的类来实现这一点,我们称之为Special。然后您将使C从Special继承,B从A继承。此外,您将保护静态方法,这意味着只有继承Special的类才能访问它

class A
{
}
class Special : A
{
    protected static int Count()
}
class B : A
{
}
class C : Special
{
}

唯一的解决方案是更改类层次结构。如果你问我的话,你会在代码评审中遇到麻烦和WTF时刻,这是不值得的

class ABase
{
}
class A
{
   public static int Count()
}
class B : ABase
{
}
class C : ABase
{
}