Каков наилучший способ решить эту проблему?
Статический член один для всех подклассов, и мне нужен другой статический член для подклассов, но с тем же именем, чтобы я мог использовать Vehicle.canDo; это должно дать мне разные массивы в зависимости от того, к какому классу относится экземпляр vechicle.
Я могу просто удалить статику из массива canDo, но все экземпляры одного и того же подкласса всегда должны иметь одинаковые значения в массиве canDo, поэтому нет необходимости иметь массив canDo в каждом экземпляре, это будет большая трата памяти, потому что у меня будет слишком много экземпляров этого класса.
class Vehicle {
public static List<string> canDo;
static Vehicle() {
canDo = new List<string>();
canDo.Add("go");
}
}
class Plane : Vehicle {
static Plane() {
canDo.Add("fly");
}
}
class Ship : Vehicle {
static Ship() {
canDo.Add("sail");
}
}
class Main {
static void Main(string[] args) {
Vehicle plane = new Plane();
Vehicle ship = new Ship();
plane.canDo; // Contains (go, fly and sail) i want only (go and fly)
ship.canDo; // Contains (go, fly and sail) i want only (go and sail)
}
}