|
Технофашист
229 / 217 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
Дружественные функции21.03.2009, 14:06. Показов 18919. Ответов 11
Метки нет (Все метки)
Я так понимаю, что в С# нет такого. Но а существуют ли какие-либо альтернативы?
Нужно чтоб к приватным полям одного класса был доступ только у двух других. Причём даже у самого этого класса не будет методов доступа к своим полям.
0
|
|
| 21.03.2009, 14:06 | |
|
Ответы с готовыми решениями:
11
Дружественные числа, через файлы Множественное наследование и дружественные классы
|
|
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
|
|
| 21.03.2009, 14:22 | |
|
Есть, конечно. Ключевое слово internal встречали?
Это и есть аналог friend. Член класса с модификатором доступа internal доступен для всех классов внутри одной сборки.
1
|
|
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
| 21.03.2009, 14:25 | |
|
internal
1
|
|
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|||||||||||
| 09.02.2019, 14:51 | |||||||||||
|
а в чем взаимосвязь между internal и дружественных функций ?
лично я на своем примере не могу понять как мне решить данную задачу 1-ый класс
0
|
|||||||||||
|
|
||||||||||||||||||||||||||
| 09.02.2019, 15:46 | ||||||||||||||||||||||||||
|
Enifan, твои примеры в принципе не компилируются. То что ты показал это свойство, а не поле, но так как свойство по умолчанию
private, то private set тут не нужен.Добавлено через 39 секунд Поля делать открытыми разумно, только если это readonly поля, иначе нужно использовать свойства.Добавлено через 9 минут Если тебе нужно писать тесты, то тестовые фреймворки умеют все эти дела делать без всяких friend классов.Добавлено через 2 минуты internal тебе поможет, если разместить твои классы в отдельной сборке, внутри которой можно будет менять значение X кем угодно, а сборках, которые ссылаются на эту сборку с классом Node не будет доступа на запись в свойство. В таком случае такой код будет работать:Сборка
Или такой вариант. Наследуемся от абстрактного класса классами, которые тестируют. Кем не нужно, тем не наследуемся: Сборка
#######################Если всё-таки поле, то:
1
|
||||||||||||||||||||||||||
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
||
| 09.02.2019, 17:28 | ||
|
насчет internal понял что он имеет смысл только в сборках (с этим я еще не сталкивался, разные сборки делать еще не приходилось, да и не знаю как) за примеры спасибо, более любопытный был последний. жаль что для одного свойства придется прописывать 30+ строк кода. у меня по логике таких свойств штук 5, и на каждое свойство столько кода - как по мне это не шутки... все таки жаль что модификатора friend не существует, с ним либо кода меньше (причем значительно) либо сборку делать не надо
0
|
||
|
|
||||||||||||||
| 09.02.2019, 17:44 | ||||||||||||||
|
Создаёшь библиотеку добавив её в решение (Solution). На этом этапе в решении у тебя два проекта. Добавляешь ссылку на библиотеку из своего приложения. Добавлено через 2 минуты Добавлено через 1 минуту
Вообще в таких случаях нужно понимать твою задачу, все эти обсуждения имеют конечно смысл, но от них иногда мало толку, так как ты можешь пытаться решить задачу вообще неверным способом, а знать об этом не будешь. В чём конкретно твоя задача? Добавлено через 1 минуту Добавлено через 36 секунд Как и нет в C# множественного наследования, кому-то это тоже может показаться минусом. Добавлено через 3 минуты Кстати, для возможности присвоения значения можно использовать не свойства, а методы и писать их хоть в одну строку.
Правда я считаю, что все эти ухищрения с записью лишь бы было в одну строку излишни. Код должен быть читабельным, а не сплошным месивом из длинных строк.
0
|
||||||||||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
|
|||||||
| 09.02.2019, 18:01 | |||||||
0
|
|||||||
|
|
||
| 09.02.2019, 18:21 | ||
|
0
|
||
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|||||||||||||||||||||
| 09.02.2019, 19:53 | |||||||||||||||||||||
|
лично мне хочется сделать красивую менюшку в консоли (про WinForm я в курсе, с ним уже работал), пока в WinForm не лезу, хочу до конца разобраться со всеми возможностями c# (по шилдту), почитал новую тему - применил на практике, так и обучаюсь (в данном случаи реально понимаю где может пригодиться та или иная возможность, которую разработчики ввели в c#). а в целом делаю морской бой (на c++ уже делал с корявым кодом и заставлял бота играть против бота ))). с логикой проблем нет, а вот синтаксис языка и его тонкости подучить бы надо, на них обычно много времени и трачу.
по поводу текущей задачи - меню -> стрелочная навигация + кольцевой двусвязный список + немного издевательства над консолью. координаты начала текста
0
|
|||||||||||||||||||||
|
|
|||||||
| 10.02.2019, 09:34 | |||||||
|
Но если очень хочется, то можно сделать это через ближайший аналог - приватные интерфейсы. Это делается так:
Члены приватного интерфейса нельзя вызвать без приведения к этому интерфейсу, также они не появляются в списке подсказок в IntelliSense. Если вы не знаете о существовании интерфейса INodePrivate то вы никогда и не догадаетесь, что у объекта есть такие методы/свойства.
1
|
|||||||
|
1848 / 1190 / 501
Регистрация: 14.10.2018
Сообщений: 3,211
|
|
| 11.02.2019, 20:48 | |
|
Всем спасибо за ответы, не думал что только способов решения можно сделать с помощью логики, хотя по сути все обертки. Сделал свои поля public и перестал заморачиваться над решением своей задачи.
А что насчет дружественных функций - нет так нет, да и фиг с ними )) Найдем другие пути решения задач.
0
|
|
| 11.02.2019, 20:48 | |
|
Помогаю со студенческими работами здесь
12
Дружественные функции дружественные функции Дружественные функции С++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере 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
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|