|
13 / 9 / 4
Регистрация: 23.10.2018
Сообщений: 31
|
||||||
Модификаторы доступа01.12.2019, 15:58. Показов 2807. Ответов 8
Есть разница (и какая, если есть), между полями input и output? Если разницы нет, то как писать предпочтительней?
0
|
||||||
| 01.12.2019, 15:58 | |
|
Ответы с готовыми решениями:
8
Модификаторы доступа, правильно ли я их понимаю
|
|
304 / 186 / 45
Регистрация: 05.07.2018
Сообщений: 580
|
|||||||||||
| 01.12.2019, 16:24 | |||||||||||
|
Nanodesy,
В общем случае, принято использовать свойства для публичного предоставления информации о состоянии объекта.
1
|
|||||||||||
|
13 / 9 / 4
Регистрация: 23.10.2018
Сообщений: 31
|
|
| 01.12.2019, 16:37 [ТС] | |
|
aenye, о свойствах я знаю, обычно их и использую, про то что поля в общем случае закрыты, я слышал, но в голове ещё не отложилось (Благо студия постоянно напоминает мне об этом). Да и разницу между internal и public я понимаю (Наверное). internal - разрешает доступ для того проекта в котором определен класс (То есть это по сути тот же public, но только он не даст вызвать класс ( и не только класс), если он не находится в том же самом проекте).
Только вот суть вопроса была в том, какой доступ мне выбрать? Так как класс уже internal, то принцип работы и с public и с internal будет наверное одинаков, т.е мы просто не сможем получить доступ к этому классу из другого проекта, но к полям мы сможем получить доступ из любого мест этого же проекта. Возможно тут конечно какая-то особенность в наследовании, но это я и хочу узнать.
0
|
|
|
304 / 186 / 45
Регистрация: 05.07.2018
Сообщений: 580
|
|
| 01.12.2019, 17:01 | |
|
Nanodesy, Если вам нужно предоставить API для сторонней сборки - используйте public. Если логика класса предполагает его использование только внутри самой сборки - используйте internal.
Например, у Вас есть класс (BananaCountMonitor), который предоставляет интерфейс для получения текущего количества бананов в магазине. И класс, в котором определен метод подсчета бананов в магазине (BananaCounter). Условимся, что объект класса BananaCounter используется только в классе BananaMonitor, когда нужно посчитать текущее кол-во бананов в магазине. Тогда BananaMonitor будет использоваться с модификатором public, т.к. все кому это интересно, могут узнать кол-во бананов. BananaMonitor можно пометить как internal, потому что никого не волнует, каким именно способом мы считаем бананы, мы можем поменять этот способ в любой момент, и никто "снаружи", кто использует данный счетчик, не пострадает при изменении его реализации.
1
|
|
|
13 / 9 / 4
Регистрация: 23.10.2018
Сообщений: 31
|
||||||
| 01.12.2019, 17:14 [ТС] | ||||||
|
aenye, и это тоже понятно) Посмотрите код ниже, у меня класс c модификатором доступа internal, он содержит в себе два поля с доступами public и internal. Условно представим, что данный класс входит в состав библиотеки, которая подключается к другому проекту. Мы не можем вызвать класс Test из другого проекта, так как он обладает модификатором internal. Соответственно, я полагаю, что так как мы не можем вызвать класс, то в данной ситуации (даже если поля были бы статичными), мы не можем и обратиться к полям этого класса. А теперь вопрос: Какая разница какой в данном случае между модификаторами internal и public полей input и output? (Ведь нам все равно, мы не можем вызвать эти поля, даже если бы оба поля имело бы модификатор public или internal) Если же в этом нет разницы, то какой модификатор использовать предпочтительней? (В данной ситуации модификаторы выполнют только роль дать доступ к полям в родном проекте, но не в чужом. А запрещает доступ к этим модификаторам internal)
0
|
||||||
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||
| 01.12.2019, 17:32 | ||
Сообщение было отмечено Nanodesy как решение
Решение2. выберите соответствующую видимость для каждого члена класса 3. перестаньте представлять, что класс паблик
1
|
||
|
13 / 9 / 4
Регистрация: 23.10.2018
Сообщений: 31
|
|
| 01.12.2019, 17:35 [ТС] | |
|
КОП, окей, логично, но ведь по сути это ни на что не влияет?
1
|
|
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
||
| 01.12.2019, 17:40 | ||
|
с точки зрения вложенного смысла, или есть вдруг решите сменить модификатор самого класса - влияет
3
|
||
|
40 / 25 / 7
Регистрация: 04.10.2012
Сообщений: 127
|
|
| 03.04.2020, 12:18 | |
|
Я составил схему на основе этой статьи: Модификаторы доступа (Руководство по программированию в C#). Надеюсь, пригодится.
1
|
|
| 03.04.2020, 12:18 | |
|
Помогаю со студенческими работами здесь
9
Зачем нужны модификаторы доступа. Хороший пример? Изменить модификаторы доступа public к полям класса на private Зачем писать модификаторы доступа перед словом class? Модификаторы доступа – какие бывают, для чего используются Могут ли аксессоры свойства иметь различные модификаторы доступа Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|