作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一系列对象,我们称它们为建筑物,每个对象都共享特定的属性,这些属性对于该建筑物是静态的,但对于每座建筑物都不同,例如价格。我认为实现它的最佳方法是创建一个具有共享价格属性的抽象父类(super class)并在每个子类中设置值,但我不知道如何让它工作。这是我尝试过的示例:
using System;
public abstract class Buildings
{
internal static int price;
internal static int turnsToMake;
}
using System;
public class Walls : Buildings
{
public Walls()
{
price = 200;
turnsToMake = 5;
}
}
这对于构造来说效果很好,但如果我想在创建它之前检查价格(检查玩家是否有足够的钱),那么它只会返回一个空值。我确定这是一个 super 简单的修复,但我无法弄清楚。有帮助吗?
最佳答案
有一个“不完整”但简单的解决方案值得考虑。如果您将基类定义为通用类,并且在派生类中将 T 设置为类本身,它将起作用。
发生这种情况是因为 .NET 为每个新定义静态定义了一个新类型。
例如:
class Base<T>
{
public static int Counter { get; set; }
public Base()
{
}
}
class DerivedA : Base<DerivedA>
{
public DerivedA()
{
}
}
class DerivedB : Base<DerivedB>
{
public DerivedB()
{
}
}
class Program
{
static void Main(string[] args)
{
DerivedA.Counter = 4;
DerivedB.Counter = 7;
Console.WriteLine(DerivedA.Counter.ToString()); // Prints 4
Console.WriteLine(DerivedB.Counter.ToString()); // Prints 7
Console.ReadLine();
}
}
关于c# - 如何为每个子类继承具有唯一值的静态属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14786562/
我是一名优秀的程序员,十分优秀!