如何隐藏静态方法

时间:2011-01-26 10:35:34

标签: c# polymorphism static-methods

假设我有一个类,如:

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

如何为B类隐藏此静态方法,而不是为C?

隐藏

3 个答案:

答案 0 :(得分:9)

基本上,你不能。哎呀,如果它是公开的,那么任何人都可以调用它。

你可以保护它,允许从B或C内部调用,但不能在其他地方调用......但你仍然无法区分B和C.

答案 1 :(得分:0)

你可以通过创建另一个类来实现它,让我们称它为Special,继承A.然后你将使C继承自Special,B继承自A.另外,你将保护静态方法,这意味着只有类继承Special将可以访问它。

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

答案 2 :(得分:0)

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

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