Изменяемая переменная доступна для всех классов? - PullRequest
0 голосов
/ 22 мая 2011

Я занимаюсь разработкой программы на C # и мне нужна изменяемая переменная, которая доступна для всех классов в моей программе.

Например, я хочу установить для него значение по умолчанию, скажем, false, когда программа запускается, а затем иметь возможность изменить его на true позже, когда произойдет действие. Значение true затем необходимо передать, когда другие классы его прочитают.

Как этого достичь?

Ответы [ 3 ]

2 голосов
/ 22 мая 2011

Три варианта:

  • Сделать это переменной экземпляра определенного типа и убедиться, что у каждого класса есть доступ к одному и тому же экземпляру
  • Сделать статической переменной определенногоtype
  • Где-то посередине: сделать его переменной экземпляра в singleton-типе .

Лично я предпочел бы первый подход в сочетании с внедрением зависимости, ноподумайте, какие классы действительно нужно знать об этом.Это действительно каждый класс в вашей программе?

Глобальное состояние (через статические переменные) и синглтоны затрудняют тестирование кода в целом.

Кроме того, я определенно сделаюэто приватная переменная и имеет свойство для доступа к ней.

2 голосов
/ 22 мая 2011

Как насчет статического?:

public static class MyProps
{
    public static bool MyProp { get; set; }
}

В вашем коде:

MyProps.MyProp = true;

Инициализация не требуется, поскольку логические значения всегда инициализируются в false.

0 голосов
/ 22 мая 2011

Звучит так, будто вам нужен статический член в каком-то классе.

class MyClass {
  static bool ms_MyStatic = false;
}

... вы можете ссылаться на него как MyClass.ms_MyStatic, где хотите.

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