(Сразу три вопроса о модификаторах ограничения.)
Ответы на три вопроса о модификаторах ограничения.
- 08.01.14 г.
Ответы на вопросы по поводу статьи «Модификаторы ограничений».
Вопрос 1.
«Может ли модификатор доступа Internal считаться модификатором ограничения в смысле различия кодов cs и exe? Если да, то в какой мере?».
Ответ.
Нет, ведь модификатор доступа Internal в C# указывает, что доступ к типу (и его членам) ограничен текущей сборкой. Или: обозначенный доступ актуален для программы в любом коде.
Вопрос 2.
«Язык Си Шарп настолько многообразен, что в нем должны быть какие-то намеки на ваши модификаторы ограничения. Так?»
Ответ.
Намеки везде можно найти. Например, в C# (подчеркиваем – в этом языке программирования) буллы нельзя перегнать в инты (тип значения bool нельзя преобразовать в int). Это действительно концептуальное ограничение (технически-то можно было бы реализовать), но все же не на тип, а на его преобразование. А модификатор ограничения – ограничение на тип.
Вопрос 3.
«В статье Вы привели пример об «ограничении new». Но ведь есть же и «модификатор new». Чем второй не модификатор ограничения?»
Ответ.
Модификатор new скрывает наследуемый член от члена базового класса. Это функциональное ограничение, а никак не концептуальное. Поэтому модификатор new не является в принципе модификатором ограничения. И ограничение new по смыслу ближе, поэтому и было приведено в качестве примера.
Согласование терминов.
Дело в том, что в C# есть модификаторы, в т.ч. модификаторы доступа, про что было сказано в статье. И новодиалектические модификаторы ограничения могут считаться одним из видов модификаторов, причем это, как указано в статье, «важно при решении ряда задач, по крайней мере, диалектического программирования (а как там будет с обычным программированием, пока не понятно)».