Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 107

Зачем нужены Статические конструкторы?

05.02.2020, 16:52. Показов 3367. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Зачем нужен статистический конструктор если можно присвоит значение статистическим переменным при их объявлении ?

C#
1
2
3
4
5
class Name
{
    public static int a = 5;
    public static int b = 7;
}
Я понимаю что конструктор вызывается неявным образом,что он вызывается в первую очередь (Вить также ?)

Но смысл его какой?

И ещё вопрос:"Конструктор типа static вызывается автоматически, когда класс загружается впервые, причем до конструктора экземпляра"

Зачем нужно это свойство ? Что оно даёт?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2020, 16:52
Ответы с готовыми решениями:

Статические конструкторы
Появилось некоторое количество вопросов касательно статических конструкторов. Во-первых, вот класс который продемонстрирован в учебнике...

Конструкторы: зачем нужны?
Изучаю классы, раздел конструкторы, не очень понятно их использование. Они нужны чтобы из другого класса, вытащить какую-нибудь переменную...

Зачем в классе половина методов статические
Здравствуйте. Возможно вопрос не по теме, но в книжках не нашёл. "Допиливаю" чужой проект на шарпе. У коллеги в проекте имеется...

6
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
05.02.2020, 16:58
Цитата Сообщение от ываыаываываыв Посмотреть сообщение
Зачем нужен статистический конструктор если можно присвоит значение статистическим переменным при их объявлении ?
В простом случае — можно, конечно.
Но есть случаи более сложные: например, считать значение полям из файла конфигурации или из базы данных.
Вы же не будете для каждого свойства считывать весь файл или открывать соединение с базой и выполнять запрос, верно?

Цитата Сообщение от ываыаываываыв Посмотреть сообщение
Зачем нужно это свойство ?
Чтобы инициализировать тип до того, как будут созданы экземпляры этого типа.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
05.02.2020, 17:24
Цитата Сообщение от ываыаываываыв Посмотреть сообщение
Зачем нужен статистический конструктор если можно присвоить значение статистическим переменным при их объявлении ?
ываыаываываыв, kolorotur, статический конструктор в любом случае используется, если присвоены значения статическим полям:
C#
1
2
3
4
5
6
7
8
    public class Demo
    {
        public static int aaa = 5;
        static Demo()
        {
            Console.WriteLine("Статический конструктор");
        }
    }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public class Demo
    {
        public static int aaa;
 
        static Demo()
        {
            aaa = 5;
            Console.WriteLine("Статический конструктор");
            return;
        }
 
        public Demo()
        {
            base..ctor();
            return;
        }
    }
}
Присвоение статических полей неявно переползает в статический конструктор.
1
 Аватар для Enifan
1849 / 1191 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
05.02.2020, 18:03
ываыаываываыв, Еще инфа по вашей теме Применение статического конструктора
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
05.02.2020, 18:23
Цитата Сообщение от ываыаываываыв Посмотреть сообщение
Конструктор типа static вызывается автоматически, когда класс загружается впервые, причем до конструктора экземпляра
Честно говоря, это даже не всегда так

Вот пример, в котором конструктор экземпляра будет выполнен до статического конструктора
C#
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
using System;
 
public class Program 
{
    public static void Main() 
    {
        var foo = Foo.Singleton;
        //Output:
        //Instance ctor
        //Static ctor
    }
}
 
public class Foo
{
    public static Foo Singleton = new Foo();
 
    static Foo()
    {
        Console.WriteLine("Static ctor");
    }
 
    public Foo()
    {
        Console.WriteLine("Instance ctor");   
    }
}
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
05.02.2020, 18:29
Цитата Сообщение от amr-now Посмотреть сообщение
статический конструктор в любом случае используется, если присвоены значения статическим полям:
Да я вроде обратное не утверждал...
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
05.02.2020, 18:45
kolorotur, я к тому, что предмет спора отсутствует. Просто безразлично. Даже с точки зрения красоты кода безразлично.

Добавлено через 9 минут
Цитата Сообщение от novikov.ea Посмотреть сообщение
Вот пример, в котором конструктор экземпляра будет выполнен до статического конструктора
Конструктор экземпляра будет завершён до завершения статического конструктора,
но статический конструктор запускается раньше конструктора экземпляра.

Добавлено через 1 минуту
Хотя да. Причудливая смесь статической инициализации полей и создания экземпляра. Согласен.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2020, 18:45
Помогаю со студенческими работами здесь

Статические конструкторы
Выберите верные утверждения о статических конструкторах: 1. Статический конструктор для значимых типов не может быть объявлен без...

Зачем конструкторы public?
Примеры конструкторов такие: public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence...

Объясните зачем нужны конструкторы
Зачем нужны конструкторы? Читаю в книгах, смотрю видеоуроки и все равно не понятно

Конструкторы - что это и зачем нужно?
Объясните, пожалуйста, для чего нужны конструкторы и деструкторы? Что это вообще?

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru