Я новичок в С# и.NET Framework и изо всех сил пытаюсь понять, как это сделать. Я полагаюсь на Наследование для чего-то подобного?
Когда переменная allDim
истинна, я хочу, чтобы все экземпляры экземпляров возвращали 0 для своего dimPercent.
public class Program
{
//if this is true, all rooms should return 0
public bool allDim = false;
public class Room
{
//0 is lights out. 100 is as bright as possible
public Room(int dimPercent)
{
DimPercent = dimPercent;
}
private int dimPercent;
public int DimPercent
{
get
{
if (Program.allDim)
{
//if allDim is true, all lights should be dimmed to 0 percent
return 0;
}
else
{
return dimPercent;
}
}
set
{
dimPercent = value;
}
}
}
public static void Main()
{
Room livingRoom = new Room(80);
Room kitchen = new Room(85);
Room bedroom = new Room(65);
allDim = true;
// This should return 0 since allDim was set to true
Console.WriteLine(kitchen.DimPercent);
}
}
Создание базового класса, в котором содержится allDim
и позволяющего получить класс Room из этого нового базового класса, не allDim
мне, поскольку allDim
технически не является свойством каждого экземпляра класса. Извиняюсь, если я уничтожил некоторые термины.
Преобразуйте логическое значение в статический член класса.
public static bool allDim = false;
Если вы сделаете allDim
в частное статическое поле, вы легко достигнете того, что хотите. Однако с точки зрения ответственности вы должны спросить себя, может ли какой-либо из комнат повлиять на другие комнаты?
public class Room
{
private static bool allDim = false;
// I am not sure if we should make this into a static method
public void SetAllDim(bool isAllDim){
allDim = isAllDim;
}
...
}