Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Инициализация статического класса / 25 сообщений из 279, страница 1 из 12
01.05.2019, 05:32
    #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
01.05.2019, 07:59
    #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
01.05.2019, 08:37
    #39808679
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Инициализация статического класса
iskatelsql
Код: c#
1.
public static int m = 3.14;


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


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



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


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