Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > глобальные переменные C#


Автор: Vaulter 9.7.2004, 12:09
ээээ? есть
MyClass mc=new MyClass();

необходимо чтобы mc был виден и из Form1 и Form2 и т.д.

как?

Автор: Kurt 9.7.2004, 12:49
Нууу..
Тут, все зависит от задачи.
Варианты решения:
1) Объявить эту переменную static.
Код

static  MyClass mc;

Но тогда, ессно, хранить можно тока одно значение на всех.
2) Объявить переменную public.
Код

public MyClass mc;

Но в конструкторе каждой формы придется передавать указатель не экземпляр класса (обычно, этол\ форма), где содержится это поле.
Короче, в зависимости от условий.
Опиши подробнее задачу.

Автор: Vaulter 9.7.2004, 13:21
просто есть класс настроек программы (загрузка, сохранение и доступ)
он создается в конструкторе главной формы.
соответсвенно, он должен быть тем же (чтобы по сто раз не читались, а читались только в начале - конструктор должен быть один)... в другой форме...

Автор: Kurt 9.7.2004, 15:04
Тогда я бы передавал ссылку на экземпляр этого объекта через конструктор той формы, где мне надо использовать такой объект.
А если таких полей несколько, то лучше передавать ссылку на главную форму.
А уж с помощью нее получать доступ к нужным полям.
Короче, если что, домой вернусь - напишу пример. (могу, конечно, и так - но я люблю гарантированно работающие примеры smile.gif )
Хотя тут, вроде, все просто.

З.Ы. А, может, кто-нибудь придумает решение покрасивее.. withstupid.gif

Автор: Tomcat 9.7.2004, 19:05
Создаешь дополнительно класс, например, AppSettings. У него делаешь статический атрибут/свойство класса MyClass, например, mc. В конструкторе главной формы создаешь объект класса MyClass, присваиваешь его к AppSettings.mc. Вот и все! Любая форма будет видеть видеть класс AppSetting и сможет добраться до его mc.
Можно еще поизвращаться и обойтись без AppSettings, а создать статический атрибут в самом класcе MyClass. Но это сути не меняет...

Код

public class MyClass
{
      ....................... //описание класса MyClass
}

public class AppSettings
{
    public static MyClass mc;
}

public class MainForm
{
   ...
   public MainForm(параметры)
   {
        ...
        AppSettings.mc = new MyClass(параметры);
        ...
   }
   ...
}

public class OtherForm
{
    ...
    public  someMethod()
    {
          юзаю AppSettings.mc, сколь хочу...
    }
    ...
}


Примерно так.

P.S. Это же просто. Или я чего не понимаю thumbs-up.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)