.net доступ к локальной переменной внутри класса - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в C # и .Net Framework и пытаюсь понять, как что-то сделать.Я полагаюсь на Inheritance для чего-то подобного?

Когда переменная allDim равна true, я хочу, чтобы все экземпляры класса возвращали 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 не является свойством каждого экземпляра класса.Извиняюсь, если я зарезал некоторые термины.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Если вы сделаете 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;
    }
...
}
0 голосов
/ 09 октября 2018

Преобразование вашего логического значения в статический член класса.

public static bool allDim = false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...