powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Конструктор в static классе
53 сообщений из 53, показаны все 3 страниц
Конструктор в static классе
    #38286431
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли и нужно ли писать конструктор в Static - классе (C#)?
Ведь использование static подразумевает отсутствие экземпляра объекта?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286444
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286464
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator, в static классе можно использовать только static конструкторы, которые могут понадобиться для инициализации static полей этого класса.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286481
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чему их присваивать?
Или просто писать
Код: c#
1.
MyClass()

и всё?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286502
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator, сложно набрать в гугле "c# static class constructor"?
Код: c#
1.
2.
3.
4.
static MyClass()
{
    // ...
}
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286567
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorа чему их присваивать?
static конструктор класса вызывается CLR до момента первого использования этого класса. Программисту ничего явно делать не нужно.

Термин "присваивать" не подходит для описания работы конструкторов. То что мы пишем MyClass c1 = new MyClass() не означает что присваиваем переменной c1 значение из конструктора. Во-первых, конструктор не имеет возвращаемого значения. Во-вторых, запись new MyClass() означает две вещи - выделение памяти и вызов конструктора для инициализации данных в этой области памяти.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286619
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazilestatic конструктор класса вызывается CLR до момента первого использования этого класса. Программисту ничего явно делать не нужно.


Как мне посоветовали, я набрал в гугле "c# static class constructor" и тут нашёл:
A static constructor ... executed only once when the type is first used. All classes can have static constructors, not just static classes.

То есть он вызывается в момент первого использования. Что, мне собственно, не совсем подходит для инициализации переменных (нужно считать настройки системы).

bazileТермин "присваивать" не подходит для описания работы конструкторов. То что мы пишем MyClass c1 = new MyClass() не означает что присваиваем переменной c1 значение из конструктора. Во-первых, конструктор не имеет возвращаемого значения. Во-вторых, запись new MyClass() означает две вещи - выделение памяти и вызов конструктора для инициализации данных в этой области памяти.

А как же экземпляр класса? Я до сих пор думал, что конструктор генерирует экземпляр класса. Во всяком случае, не static конструктор.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286689
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorТо есть он вызывается в момент первого использования.
Не совсем так. CLR гарантирует нам что статический конструктор будет выполнен до момента первого обращения к этому классу. В какой именно момент времени это произойдет - прямо перед обращением, в самом начале выполнения программе или где-то в промежутке - нам неизвестно. Главное что он будет выполнен.

defragmentatorЧто, мне собственно, не совсем подходит для инициализации переменных (нужно считать настройки системы).
Не вижу связи. Нужно читать - бери и читай. Staic конструктор здесь прекрасно вписывается.

defragmentatorА как же экземпляр класса? Я до сих пор думал, что конструктор генерирует экземпляр класса. Во всяком случае, не static конструктор.
Задача конструктора инициализировать поля класса (экземплярные или статические) так чтобы им можно было пользоваться. Экзмепляр класса это по сути участок памяти который выделяется с помощью внутренних механизмов CLR. Затем имея этот участок памяти мы можем инициализировать его вызвав конструктор.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286781
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286810
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OK, всё прочёл, однако
авторСтатический конструктор нельзя вызывать напрямую..
Так что спасибо, но это не то, что мне нужно. Надо делать метод для инициализации.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286815
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorOK, всё прочёл, однако
авторСтатический конструктор нельзя вызывать напрямую..
Так что спасибо, но это не то, что мне нужно. Надо делать метод для инициализации.Ну так на то есть шаблон Singleton.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286846
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazile,

bazileНе совсем так. CLR гарантирует нам что статический конструктор будет выполнен до момента первого обращения к этому классу. В какой именно момент времени это произойдет - прямо перед обращением, в самом начале выполнения программе или где-то в промежутке - нам неизвестно. Главное что он будет выполнен.

stackoverflowWhen beforefieldinit is present, the JIT compiler is allowed to optimize the code, by testing for the static ctor invocation BEFORE entering the loop. If it's not present, this optimization is not allowed.

The C# compiler automatically decides for us when to emit this attribute. It currently (C# 4) emits it only if the code does NOT explicitly defines a static constructor

Если вы создали явный конструктор типа, он будет вызван именно в тот момент, когда к нему будет выполняться обращение.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38286848
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к типу*
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38287165
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorOK, всё прочёл, однако
авторСтатический конструктор нельзя вызывать напрямую..
Так что спасибо, но это не то, что мне нужно. Надо делать метод для инициализации.Объяснить сможете, почему это не то, что Вам нужно?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38287225
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Ну как бы чтение настроек лучше выполнять в предсказуемом месте проекта:)
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38287776
Homosum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentator,
Статический конструктор более чем предсказуемое место.
Он гарантировано будет вызван до первого обращения к типу (к любому свойству класса).
В случае же изобретения велосипеда, нужно будет не забыть ни Вам ни другим программистам использующим Ваш код вызвать явную инициализацию велосипеда.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38287812
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Homosum,

у меня гоночный лисапед
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38287933
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorHomosum,

у меня гоночный лисапед

Открой для себя DI контейнер
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38287944
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorу меня гоночный лисапед
Чем обсусловлен выбор именно статического класса?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288590
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУdefragmentatorу меня гоночный лисапед
Чем обсусловлен выбор именно статического класса?

Класс - это совокупность процессов обработки данных. Можно сказать, часть приложения.
Ну и экземпляр должен быть один.
static - простейший вариант реализации в данном случае.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288777
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorКласс - это совокупность процессов обработки данных. Можно сказать, часть приложения.
http://msdn.microsoft.com/ru-ru/library/x9afc042.aspx Класс — это логическая структура, позволяющая создавать свои собственные пользовательские типы путем группирования переменных других типов, методов и событий. Класс подобен чертежу.


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

defragmentatorstatic - простейший вариант реализации в данном случае.
Статика удобная для хелперов и расширений. Бизнес логика с пломощью статики - самоубийство в чистом виде.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288857
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

у нас так пишут.
А в чём суицид-то?:)
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288859
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorМСУ, у нас так пишут.
Плохих программистов сейчас много.

defragmentatorА в чём суицид-то?:)
Проблемы при работе в многопоточной среде, в веб приложениях, в веб сервисах, невозможность использовать слабосвязность IoC, невозможность использования DI контейнеров, невозможность наследования и прочее, прочее, прочее... Мало?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288880
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПроблемы при работе в многопоточной среде, в веб приложенияхОднако, последний тренд написания хэлперов в ASP.Net MVC говорит об обратном. :-)
МСУневозможность наследованияНаследование есть, но без полиморфизма.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288881
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorНу и экземпляр должен быть один. Нужен централизованный доступ к дефолтному экземпляруПоправил.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288911
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кпоследний тренд написания хэлперов в ASP.Net MVC говорит об обратном
Для хелперов static классы прекрасно подходят и МСУ про это сказал.

Алексей КНаследование есть, но без полиморфизма.
Ты что-то путаешь. static классы по определению являются sealed. Единственное что мы там можем "переопределить" это static методы Equals и ReferenceEquals. Пользы от этого лично я не вижу.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288927
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУневозможность использовать слабосвязность IoC, невозможность использования DI контейнеров,
это им не нужно
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288930
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileАлексей Кпоследний тренд написания хэлперов в ASP.Net MVC говорит об обратном
Для хелперов static классы прекрасно подходят и МСУ про это сказал.При этом утверждая, что static - зло.

bazileАлексей КНаследование есть, но без полиморфизма.
Ты что-то путаешь. static классы по определению являются sealed. Единственное что мы там можем "переопределить" это static методы Equals и ReferenceEquals. Пользы от этого лично я не вижу.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class A
{
    public static void F1()
    {
    }
}

class B : A
{
    public static void F2()
    {
        F1();
    }
}
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288932
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУневозможность использовать слабосвязность IoC, невозможность использования DI контейнеров,
это им не нужноДа, это нам не нужно.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288951
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПри этом утверждая, что static - зло.
В одних ситуациях зло, в других нет. Это так трудно осознать?

Алексей Кbazile...
static классы по определению являются sealed.
...
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
class A
{
    public static void F1()
    {
    }
}

class B : A
{
    public static void F2()
    {
        F1();
    }
}


Это не static классы. Попробуй такой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
static class A
{
    public static void F1()
    {
    }
}

static class B : A // Ошибка компиляции
{
    public static void F2()
    {
        F1();
    }
}
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288965
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileАлексей КПри этом утверждая, что static - зло.
В одних ситуациях зло, в других нет. Это так трудно осознать?Лично меня особо беспокоит два недостатка static. А Вас?
bazileЭто не static классы. Попробуй такой пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
static class A
{
    public static void F1()
    {
    }
}

static class B : A // Ошибка компиляции
{
    public static void F2()
    {
        F1();
    }
}

Это не важно. Важно что там static-методы.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38288984
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЭто не важно. Важно что там static-методы.
Важно так как мы обсуждаем static классы, а не классы со static методами.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289086
Фотография defragmentator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУdefragmentatorМСУ, у нас так пишут.
Плохих программистов сейчас много.

defragmentatorА в чём суицид-то?:)
Проблемы при работе в многопоточной среде, в веб приложениях, в веб сервисах, невозможность использовать слабосвязность IoC, невозможность использования DI контейнеров, невозможность наследования и прочее, прочее, прочее... Мало?
Я использую static класс для работы в многопоточной среде, с веб-сервисами и пока никаких проблем не заметил.
А с чего Вы взяли, что должны быть проблемы?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289107
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorskyANA,

Ну как бы чтение настроек лучше выполнять в предсказуемом месте проекта:)
defragmentatorА с чего Вы взяли, что должны быть проблемы?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289232
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorМожно ли и нужно ли писать конструктор в Static - классе (C#)?
Ведь использование static подразумевает отсутствие экземпляра объекта?
Не только отсутствие, если лень тип объявлять запечатанным , вполне допустим хак с пустым конструктором типа.
А вообще проблема ушла в прошлое, на четвертом появился сахар - lazy ( хоть и ругают меня за это), там даже есть
для гурманов -double checked locking,
Я разделяю беспокойство мсу по поводу многопоточности, это вполне реально при статической инициализации
тут не имелось ввиду конкурентный доступ к чему- то, он будет всегда если есть потоки, это все на совести программиста
лочить доступ или тащить в апартаменты подготовленные данные типа сессии единицы работы, подготовленной заранее в укромном месте..
ну и про производительность, ( не сказал никто ) это ущербно в разгар работы приложения вытаскивать тип - конструктор
при первом обращении и инициализировать синглтон, более разумно при старте приложения делать эти операции ( дорогие)
тогда выходит ---- и конструктор типа не нужен, мы его можем про инициализировать снаружи при старте..
А вообще есть есть куча фишек setting, для этого..
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289240
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289380
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defragmentatorЯ использую static класс для работы в многопоточной среде, с веб-сервисами и пока никаких проблем не заметил.
А с чего Вы взяли, что должны быть проблемы?Проблемы начнутся, когда захочется сделать статическое поле. Доступ к нему придётся синхронизировать. Про мёртвые блокировки между статическими конструкторами уже сказали выше. Ну и в отсутствии полиморфизма тоже нет ничего хорошего. Больше вроде как проблем нет.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289381
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileАлексей КЭто не важно. Важно что там static-методы.
Важно так как мы обсуждаем static классы, а не классы со static методами.Убери static, сделай приватный конструктор - получится то же самое, только с наследованием статических членов.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289490
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КПроблемы начнутся, когда захочется сделать статическое поле. Доступ к нему придётся синхронизировать.
как это? почему?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289532
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАлексей КПроблемы начнутся, когда захочется сделать статическое поле. Доступ к нему придётся синхронизировать.
как это? почему?Потому что публичные статические члены принято делать потокобезопасными.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289568
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

то есть мне надо это как то по другому писать?

Код: c#
1.
        static readonly bool notLinkedNodeslabeledAsReadyForDelete = true; // true - отметить ноды с разорванными связями как готовые для удаления в логистическом графе
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289684
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кbazile
Для хелперов static классы прекрасно подходят и МСУ про это сказал.При этом утверждая, что static - зло.[/quot]
Смотря для чего зло. Для хелперов и расширений статика удобна, для всего остального - зло.

Алексей КЭто не важно. Важно что там static-методы.
Я говорил, вообще-то, о невозможности наследования статического класса, а не обычного класса со статическими методами. Да и декорирование обычных классов статикой (а-ля синглтон) не сулит ничего хорошего, окромя пули в голове.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289711
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

интересно как МССКЛ запускает многопоточно СЛР процедуры
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289733
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУ, интересно как МССКЛ запускает многопоточно СЛР процедуры
Обыкновенно. Берет и запускает. А что там в них происходит, SQL'ю нет никакого дела.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289895
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА что там в них происходит,
ну это в первом приближении не волнует
http://msdn.microsoft.com/en-us/library/ms403277.aspx например
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289938
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosАлексей К,

то есть мне надо это как то по другому писать?

Код: c#
1.
        static readonly bool notLinkedNodeslabeledAsReadyForDelete = true; // true - отметить ноды с разорванными связями как готовые для удаления в логистическом графе

readonly причём тут?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38289943
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДа и декорирование обычных классов статикой (а-ля синглтон) не сулит ничего хорошего, окромя пули в голове.Ну не знаю. Мне синглетоны нравятся.
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38290032
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилМСУА что там в них происходит,
ну это в первом приближении не волнует
http://msdn.microsoft.com/en-us/library/ms403277.aspx например
Речь про статические методы (CRL процедуры), а не про запрещенные типы, атрибуты и сборки.

Алексей КМСУДа и декорирование обычных классов статикой (а-ля синглтон) не сулит ничего хорошего, окромя пули в голове.Ну не знаю. Мне синглетоны нравятся.
Как может нравиться это убожество?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38290090
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КViPRosАлексей К,

то есть мне надо это как то по другому писать?

Код: c#
1.
        static readonly bool notLinkedNodeslabeledAsReadyForDelete = true; // true - отметить ноды с разорванными связями как готовые для удаления в логистическом графе

readonly причём тут?
откуда я знаю
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38290162
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosоткуда я знаю
А почему просто константу не объявить?
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38290177
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

так больше нравится круто выглядит
интересно что можно любой объект так обявить и ридонлу заканчивается только на объектной ссылке, а внутри что хошь меняй
притом все это норм безопасно пашет уже несколько лет
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38290193
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гуглишь?
не старайся, я уезжаю домой :):):)
...
Рейтинг: 0 / 0
Конструктор в static классе
    #38290251
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosкруто выглядит
Это хороший аргумент, сложно оспорить :)
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Конструктор в static классе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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