Доступ к переменной из других пространств имен - PullRequest
0 голосов
/ 09 августа 2011

Я пытаюсь установить / прочитать переменную в классе bluRemote из другого пространства имен / класса следующим образом:

namespace BluMote
{
    class bluRemote
    {
        public string cableOrSat = "CABLE";
     ........
    }
}

и другой файл cs (который является формой):

namespace BluMote
{
    public partial class SettingsForm : Form
    {
        if (BluMote.bluRemote.cableOrSat == "CABLE")
        {
             BluMote.bluRemote.cableOrSat = "SAT";
        }
 .......
    }
}

Я знаю, что я делаю это неправильно, но я более привык делать подобные вещи в VB, так что это похоже на ночь и день, ха: о)

Ответы [ 3 ]

2 голосов
/ 09 августа 2011

Вы пытаетесь получить доступ к переменной instance - то есть переменной, которая имеет потенциально различное значение для каждого объекта - просто по имени class . Это работает только для статических переменных.

Вам необходимо иметь экземпляр из bluRemote и запросить , что , для его значения. Однако я настоятельно рекомендую следующее:

  • Вы переименовываете свой класс в соответствии с соглашениями об именах .NET
  • Вы не делаете переменные общедоступными; использовать свойства

Также обратите внимание, что здесь есть только одно пространство имен - BluMote. Оба ваших класса объявлены в этом пространстве имен.

2 голосов
/ 09 августа 2011

То, что вы пытаетесь сделать, - это работать со статическими переменными, поэтому вам нужно изменить свой класс на:

namespace BluMote
{
    public static class bluRemote
    {
        public static string cableOrSat = "CABLE";
        ........
    }
}

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

Таким образом, вместо того, чтобы делать класс bluRemote статическим, вы сохраняете его и делаете:

public partial class SettingsForm : Form
{
    private bluRemote _remote = new bluRemote();  // possibly created somewhere else

    public void SomeFunction() 
    {
        if (_remote.cableOrSat == "CABLE")
        {
             _remote.cableOrSat = "SAT";
        }
    }
    .......
}
1 голос
/ 09 августа 2011

Поскольку вы объявили поле cableOrSat, вам нужно установить его для экземпляра класса bluRemote, но вы пытаетесь установить его, используя имя самого класса.

Если вы объявите поле cableOrSat как:

public static string cableOrSat = "CABLE";

Вы сможете получить к нему доступ через само имя класса.

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