@Akaero

Можно ли обходиться без статического конструктора?

Добрый день. Есть утверждение: статический конструктор имеет единственное назначение - присваивать исходные значения статическим переменным.

Вопрос: Зачем нужно создавать статический конструктор, если я могу присваивать значения статическим переменным при их объявлении в классе?
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 4
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Вопрос: Зачем нужно создавать статический конструктор, если я могу присваивать значения статическим переменным при их объявлении в классе?

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

P.S. Не проверял.
Ответ написан
Комментировать
Давным-давно основной целью статического конструктора было вернуть ссылку на инстанцию объекта, т.к. все объекты создавались как динамические переменные (а отнюдь не заполнять его статические поля). Как сейчас, не знаю.
Ответ написан
Комментировать
@WinnerIT
Программист и фотограф-любитель
Как выриант - я хочу передать в класс значение переменной из другого класса. Посмотрите пример в MSDN
Ответ написан
Комментировать
Rou1997
@Rou1997
Есть утверждение: статический конструктор имеет единственное назначение - присваивать исходные значения статическим переменным.
Глупость, например в приложении Android в нем еще реализуют загрузку нативных библиотек - JNI, а где еще, в "экземплярном" конструкторе - нельзя, на каждый экземпляр не нужна новая копии библиотеки, это утечка ОЗУ, в main() - тоже не совсем то, да и нет main() на Android.

если я могу присваивать значения статическим переменным при их объявлении в классе?
Не любым, например все операции должны поддерживать Fluid то есть чтобы все сделалось в одну инструкцию (строку), вообще-то в байт-коде в любом случае сгенерируется статический конструктор, но в синтаксисе всегда разрешено далеко не все что возможно в байт-коде.

Зачем нужно создавать статический конструктор

Как правило все же не нужно, радуйтесь. :) Хотя избавляться от того что не мешает - это уже глупость.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы