|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.12.2016, 23:03 | #1 |
Новичок
Джуниор
Регистрация: 15.12.2016
Сообщений: 5
|
зона видимости в C#
У меня в программе на C++ присутствовал класс log инициализированный глобально, который выводил логи так и туда, куда мне было нужно, инициализировался один раз, имел внутренние параметры и
БЫЛ виден из всех функций всех классов, которые туда кидали сообщения напрямую. Как реализуется подобное на C#? |
16.12.2016, 00:12 | #2 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Статическим классом, например.
|
17.12.2016, 00:14 | #3 |
Новичок
Джуниор
Регистрация: 15.12.2016
Сообщений: 5
|
Спасибо. Помогло.
Не подскажете ли еще пожалуйста, почему конструктор такого класса, если не создавать его копию, вызывается только при обращении к нему, а деструктор не вызывается вообще?
|
17.12.2016, 03:55 | #4 | |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
Первая ссылка в гугле по запросу c# static class lifetime:
Цитата:
|
|
17.12.2016, 10:07 | #5 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Не "при первом", а "до первого".
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
17.12.2016, 12:11 | #6 |
Новичок
Джуниор
Регистрация: 15.12.2016
Сообщений: 5
|
ошибочка ваша
проверял. конструктор статического класса вызывается непосредственно перед обращением к нему. нет обращения - нет запуска конструктора. по крайней мере в MS VS 2012 это так. В других версиях не проверял
Последний раз редактировалось johio; 17.12.2016 в 12:14. |
17.12.2016, 12:24 | #7 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
И? Что не так?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
17.12.2016, 22:15 | #8 |
Новичок
Джуниор
Регистрация: 15.12.2016
Сообщений: 5
|
Конструктор статического класса выполняется только перед обращением к классу, а если такового нет, то не вызывается вовсе. Это отличие от С++.
То есть, если я не знаю, какая функция вызывает класс первой, то я не уверен сработал ли конструктор вообще. Таким образом, если конструктор выполняет настройку определенных параметров, то я не знаю была ли проведена эта операция или нет. И мне придется делать это явным образом и по-другому. |
17.12.2016, 22:57 | #9 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Да, в цитате выше никто и не писал, что он вызывается при запуске. Гарантирован только вызов до использования.
Но по-моему вы что-то странное хотите и в любом случае лучше использовать другие способы реализации.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
18.12.2016, 00:50 | #10 |
Новичок
Джуниор
Регистрация: 15.12.2016
Сообщений: 5
|
Спасибо. Вопрос исчерпан.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Зона рубля :) | Alar | Свободное общение | 28 | 01.09.2011 00:06 |
зона рф и фиддлер | crazy horse | Общие вопросы Web | 4 | 01.03.2011 21:13 |
Зона-17 | [Зона17]Програміст | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 01.12.2008 14:53 |
Зона-17 | [Зона17]Програміст | Помощь студентам | 3 | 30.11.2008 11:56 |