Какова утилита общедоступных конструкторов в абстрактных классах в C#?

В Oracle что-то вроде этого работает приятно для разделения подсчета и упорядочивания немного лучше. Я не уверен, будет ли это работать в MySql 4.

select 'Tag', counts.cnt
from
  (
  select count(*) as cnt, 'Tag'
  from 'images-tags'
  group by 'tag'
  ) counts
order by counts.cnt desc
29
задан Osama AbuSitta 19 September 2018 в 13:25
поделиться

3 ответа

Совершенно верно. Вы должны отдать предпочтение защищенному конструктору.

РЕДАКТИРОВАТЬ: нет, компилятор не жалуется, но такие инструменты, как FxCop (и анализ кода), жалуются. Я считаю, что есть некоторые странные уловки отражения, которые вы можете использовать с общедоступными конструкторами в абстрактных классах, но с точки зрения, когда вы просто предоставляете функциональность базового класса другим разработчикам, пишущим подклассы, придерживайтесь защищенного конструктора.

22
ответ дан 28 November 2019 в 02:03
поделиться

Вы правы. Открытый конструктор в абстрактном классе функционально эквивалентен защищенному конструктору.

Я предпочитаю использовать в этом случае защищенный конструктор.

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

4
ответ дан 28 November 2019 в 02:03
поделиться

Да, вы правы, практически открытый конструктор не используется в классе abscract, поскольку вы не можете их создать.

Однако компилятор не будет жаловаться, потому что таким образом можно написать так много бесполезных вещей в контексте C #, но он не сможет проверить его логическое значение, он может только проверить правила синтаксического анализа, для которых он установлен.

И некоторые создатели C # сосредоточились на создании грамматики (правил) компиляции, которые действительно вредны и нарушают использование языка.

2
ответ дан 28 November 2019 в 02:03
поделиться
Другие вопросы по тегам:

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