Подтвердить что ты не робот

Как статические конструкторы могут быть сделаны не частными?

Модификаторы доступа, такие как public, private, не допускаются к статическим конструкторам на С#. Тем не менее, анализ кода Visual Studio имеет предупреждение в категории безопасности С#, в котором говорится: " CA2121: статические конструкторы должны быть частными".

Можно ли сделать статический конструктор не приватным? Или это ошибка анализа кода Visual Studio?

CLARIFICATION. Я не пытаюсь сделать какой-либо конструктор не закрытым. Итак, почему? вопросы не имеют значения. Мне просто интересно узнать о противоречии между двумя инструментами Microsoft и хочу узнать, есть ли что-то, что я не знаю о том, как обрабатываются статические конструкторы.

4b9b3361

Ответ 1

Статический конструктор С# всегда является приватным. Вы никогда не должны видеть это предупреждение для кода С#, и предупреждение там не полезно. Анализ кода также доступен для других языков, и это другие языки, которые могут заставить вас писать классы с нестандартными статическими конструкторами.

Ответ 2

Если вы читаете документы, в нем четко указано

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

Я полагаю, что более важным вопросом было бы то, почему вы хотите?

Ответ 3

Можно ли сделать статический конструктор не приватным?

В чем смысл этого?

Статический конструктор называется моментом, когда класс загружается из компоновщика, прежде чем какой-либо метод выполнится. Таким образом, статический конструктор не может быть разумным вызываться вне автоматического вызова от компоновщика, что означает, что нет смысла в нем иметь какой-либо модификатор доступа.

В принципе, вы не можете ссылаться на класс БЕЗ ИСПОЛНЕНИЯ СТАТИЧЕСКОГО ИЗМЕНЕНИЯ - и это до того, как ваш код, содержащий эталон, будет выполняться.