Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно на C# создать глобальные переменные(обьекты)?
|
|||
|---|---|---|---|
|
#18+
Проясните следующий момент... Как правильно на C# создать глобальные переменные(обьекты) Я для подобных целей выбрал тип данных static и завел отдельный класс. Все вроде бы нормально, но есть ряд мелких непоняток. Сначала приведу код этого класса... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 2. Второй вопрос вытекает из первого. Есть контрол с комбоБоксом, который необходимо наполнить данными. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Если я задам тип конструктора как public, то вылетит ошибка в (*). Оно и понятно, т.к. не создан обьект, но если я начну его создавать, то получится повторное чтение данных из файлов(а этого не нужно, т.к. накладно). Для подобных целей я завел отдельное окно(соотв. отдельный класс), при запуске которого отображается само окно и в отдельном потоке происходит извлечение данных из различных внешних источников. Так вот по идее обьект usexml cxml как static private и следовательно, если бы был вместо static conf <-> public conf, то достаточно в любом классе записать conf cf = new conf() и должно быть все нормально при обращении к cxml из другого класса, но вылетае ошибка (*) (видимо обьект не создан). Следовательно вопрос, как все же контролировать такой код, т.е. мне нужно сделать все загрузки в моем спец. заведенном классе, а потом просто использовать обьекты в любом месте программы? И сколько раз вызывается конструктор с типом static(один или более)? P.S. что-то я загнул =))) -- Хочешь избежать критики – ничего не делай, ничего не говори и будь никем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 13:49 |
|
||
|
Как правильно на C# создать глобальные переменные(обьекты)?
|
|||
|---|---|---|---|
|
#18+
1. В этом коде меня смущает конструктор с типом static, т.е. скажите как он работает? при первом обращении к любому статичному члену вызывается (только один раз) статический конструктор, так что ошибок быть не должно, кроме того, ты не привел код ошибки, соответсвенно трудно судить что произошло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2005, 13:56 |
|
||
|
Как правильно на C# создать глобальные переменные(обьекты)?
|
|||
|---|---|---|---|
|
#18+
Вот стандартное решение проблемы: http://dotsite.ru/solutions/patterns/singleton/ Статический конструктор вызывается только один раз. Причной вызова может быть: 1. Создание экземпляра класса 2. Обращение к статическому члену класса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2005, 18:33 |
|
||
|
Как правильно на C# создать глобальные переменные(обьекты)?
|
|||
|---|---|---|---|
|
#18+
Я тоже раньше так считал, но ниже приведенная конструкция работает abstract class ConstName { public const string name = "//conf//conf.xml"; } abstract class StaticName { public static string name = "//conf//conf.xml"; } Console.WriteLine(ConstName.name); Console.WriteLine(StaticName.name); Значит, для доступа ConstName.name и StaticName.name экземляра класса не нужно..( он ведь abstract).. Несколько неожиданно.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2005, 09:55 |
|
||
|
Как правильно на C# создать глобальные переменные(обьекты)?
|
|||
|---|---|---|---|
|
#18+
serkirЯ тоже раньше так считал, но ниже приведенная конструкция работает abstract class ConstName { public const string name = "//conf//conf.xml"; } abstract class StaticName { public static string name = "//conf//conf.xml"; } Console.WriteLine(ConstName.name); Console.WriteLine(StaticName.name); Значит, для доступа ConstName.name и StaticName.name экземляра класса не нужно..( он ведь abstract).. Несколько неожиданно.. Так оно и есть. Для доступа к статически членам экземпляра класса не нужно. P.S. Если бы имелся статический конструктор, он был бы вызван. Это пункт № 2 - обращение к статическому члену класса. Чтобы вызвался статический конструктор нужно либо первое, либо второе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2005, 11:41 |
|
||
|
Как правильно на C# создать глобальные переменные(обьекты)?
|
|||
|---|---|---|---|
|
#18+
2 serkir так дык, там один const, а другой static. Какие тут конструкторы. Человеку нужен либо синглетон, либо его вариации. Я например люблю такой: class Configurator { private static DOMDocument m_oXML = null; public static getParameter(aName) { if ( m_oXML is null ) { load(); } return ... } private static load() { m_oXML = new DOMDocument; m_oXML.load( "c:\some.xml"); } } Cheers Pete ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 13:09 |
|
||
|
|

start [/forum/topic.php?fid=20&gotonew=1&tid=1437262]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 399ms |

| 0 / 0 |
