【发布时间】:2011-03-12 13:27:48
【问题描述】:
我知道,理论上,您不能(也不应该)在 C# 中派生静态类,但我有一个案例我认为我需要它...我想为 A 类定义一些静态常量而且,正如我很快发现的那样,你不能这样做,所以我按照本教程进行操作:http://msdn.microsoft.com/en-us/library/bb397677.aspx
所以,我有一个像这样的静态类:
public static class ClassAConstants
{
public const string ConstantA = "constant_a";
public const string ConstantB = "constant_b";
}
然后,我的 B 类扩展了 A 类并添加了一些新的静态常量。我想做的是:
public static class ClassBConstants : ClassAConstants
{
public const string ConstantC = "constant_c";
public const string ConstantD = "constant_d";
}
这样,四个常量可以通过 ClassBConstants.ConstantA 或 ClassBConstants.ConstantD 访问。但是,C# 不会让我这样做。
我怎样才能做到这一点?也许解决方案完全不同,我不在乎它是否根本不使用静态常量,只要结果是我想要的。
编辑:
感谢 Amby,我发现常量是隐式静态的,所以我真的不需要创建人工静态类(ClassAConstants 和 ClassBConstants)。解决方案再简单不过了:
public class A
{
public const string ConstantA = "constant_a";
public const string ConstantB = "constant_b";
// ...
}
public class B : A
{
public const string ConstantC = "constant_c";
public const string ConstantD= "constant_d";
// ...
}
使用该代码,我得到了我最初想要的结果。
【问题讨论】:
-
如果你真的需要一个普通类的静态实例,单例模式会有所帮助
-
ClassBConstants IS-A ClassBConstants?