我知道,理论上,你不能(也不应该)在C#中派生静态类,但我有一种情况,我认为我需要它...我想定义一个数字A类的静态常量,正如我很快就发现,你不能这样做,所以我跟着这个教程:http://msdn.microsoft.com/en-us/library/bb397677.aspx在C#中导出一个静态类#
所以,我有一个静态类是这样的:
public static class ClassAConstants
{
public const string ConstantA = "constant_a";
public const string ConstantB = "constant_b";
}
然后,我具有扩展类A并添加一些新的静态常量的类B。我想这样做是这样的:
public static class ClassBConstants : ClassAConstants
{
public const string ConstantC = "constant_c";
public const string ConstantD = "constant_d";
}
这样,四个常数将与ClassBConstants.ConstantA或ClassBConstants.ConstantD访问。但是,C#不会让我这样做。
我该如何做到这一点?也许解决方案是完全不同的,我不在乎它是否根本不使用静态常量,只要结果是我想要的。
编辑:
感谢去啦我发现常数是隐式静态的,所以我真的没有需要创建一个人工静态类(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";
// ...
}
通过该代码,我得到了最初想要的结果。
单身模式可以帮助你,如果你真的需要你有一个常规类的静态实例 – Guillaume86 2011-03-12 13:31:34
ClassBConstants IS-A ClassBConstants? – 2011-03-12 13:31:54