powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инициализация статического класса
25 сообщений из 279, страница 1 из 12
Инициализация статического класса
    #39808668
iskatelsql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть статический класс, к примеру

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    static class asd
    {
        public static int m;

        public static int sum_m(int a)
        {
            return a + m;
        }
    }


где m - некоторая глобальная переменная для всех ф-ций класса, требующая присвоения значения.

В случае с обычным классом я бы создал конструктор с этой переменной, и компилятор просто не дал бы создать объект без ее инициализации.

А в статическом классе можно сделать как-то так, чтоб компилятор ругался "нефиг вызывать методы этого класса, не проинициализировав переменную", если перед вызовом любого метода не присвоить ей значение?
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808676
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Статики - зло;
2) Мембер класса всегда инициализируется автоматически значением по умолчанию.
3) Public fields - зло. Замени на свойство и поставь проверку что было присвоение.
4) Освой общепринятый стиль именования для C#

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
static class asd {
    private static bool _mInitialized;
    private static int _m;

    public static int M {
         get { return _m; }
         set {
            _mInitialized = true;
            _m = value;
         }
    }

    public static int sum_m(int a) {
        if(!_mInitalized) throw new InvalidOperationException("Инициализируй M, блеат!");
        return _m + a;
    }
}
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808679
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql
Код: c#
1.
public static int m = 3.14;


?
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808682
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatPublic fields - злоглобальные константы же.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808683
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlесли перед вызовом любого метода не присвоить ей значение?если инициализация перед вызовом метода, то помести ее параметром в метод. И все тебя поймут сразу.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808684
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsql,
Либо откажись от статического. Г.. код будет.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808692
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123iskatelsql
Код: c#
1.
public static int m = 3.14;


?
Не. Как я понял, он хочет проверять, чтобы статик был явно инициализирован из внешнего кода перед тем как его вызывают.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808697
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iskatelsqlА в статическом классе можно сделать как-то так, чтоб компилятор ругался "нефиг вызывать методы этого класса, не проинициализировав переменную", если перед вызовом любого метода не присвоить ей значение?
Любопытно узнать реальную задачу, а не вот это :)
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808699
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
"Перед вызовом" это уход от статического в обычный класс. Об этом я и написал.
У него нет логики в постановке.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808711
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В с++ нет статических классов, но есть макросы.
В шарпе нет макросов, но есть статические классы.
И оба мучаются))))
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808715
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123В с++ нет статических классов, но есть макросы.
В обычных классах есть static методы и static переменные.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808723
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Есть обходные пути) . Но я про классы.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808747
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123В с++ нет статических классов, но есть макросы.
В шарпе нет макросов, но есть статические классы.
И оба мучаются))))
Вот и я ж говорю - хочется что-то расшарить между кодом - делайте просто синглетон, тем более, если есть DI контейнер, то он вам сам его сделает, и делать ничего не надо
Код: c#
1.
сontainerBuilder.RegisterType<MySingleton>().As<IMySingleton>().SingleInstance();
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808749
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatделайте просто синглетонмного букв которые не написать по памяти.
Global.param = "глобальная константа";
Короче и запоминать не надо.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808751
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat,
Какой DI в десктопе.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808752
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Какой DI в десктопе.а что мешает?
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808753
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProPetro123Какой DI в десктопе.а что мешает?израт делать?
Хороший вкус мешает.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808754
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто тут еще не юзал static class)))
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808756
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProPetro123Какой DI в десктопе.а что мешает?
Лень ему мешает разобраться в том, что такое dependency injection.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808757
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий МухЛень ему мешает разобраться в том, что такое dependency injection.не, он вроде знает, только не понимает, что контейнер необязательно может быть из коробки ))
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808761
Дмитрий Мух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProДмитрий МухЛень ему мешает разобраться в том, что такое dependency injection.не, он вроде знает, только не понимает, что контейнер необязательно может быть из коробки ))
для этого даже не надо книжку покупать, или скачивать



достаточно прям на странице содержание пролистать
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808762
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
вам все потрындеть вместо ответа на простой вопрос.
Если программист, то приходилось ли вам использовать глобальные переменные или статик классы?
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808763
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А писатели про DI вместо темы про static class идите лесом в другую тему.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808765
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123fkthat,
Какой DI в десктопе.
Чо? У меня все консольные утилиты и те с DI пишутся.
...
Рейтинг: 0 / 0
Инициализация статического класса
    #39808766
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthatPetro123fkthat,
Какой DI в десктопе.
Чо? У меня все консольные утилиты и те с DI пишутся.
А у меня в квартире Газ!
...
Рейтинг: 0 / 0
25 сообщений из 279, страница 1 из 12
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инициализация статического класса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]