Size: a a a

2020 June 01

ДП

Дмитрий Полянин... in С#
Всем привет!
Написал статью про велосипеды в программировании.
источник

N

Nik in С#
есть класс, в нем массив, какие способы не дать изменить его во вне, кроме как отправлять на ружу его копию?
источник

А

Андрій in С#
Nik
есть класс, в нем массив, какие способы не дать изменить его во вне, кроме как отправлять на ружу его копию?
Наверное, никаких?
источник

ДП

Дмитрий Полянин... in С#
Nik
есть класс, в нем массив, какие способы не дать изменить его во вне, кроме как отправлять на ружу его копию?
Наружу можно отправить ссылку. А если сделаешь копию, то уже не изменишь.
Изменить можно передав хендлер на функцию которая меняет данные.
Например есть функция внутри класса SetData и её можно куда-то передать.
источник

N

Nik in С#
ну вот ссылка плохой вариант, можно с ней обосраться и изменить случайно то чего не надо
источник

N

Nik in С#
я думал, мб чего еще есть кроме копии
источник

ДП

Дмитрий Полянин... in С#
Так ты хочешь одновременно изменить и не изменять ))
Тут суть в инкапсуляции и выведения наружу во внешний интерфейс только того что можно менять. Это вопрос понимания инкапсуляции.
Суть такая:
Все публичные методы и поля класса не должны позволять портить его данные.
источник

ДП

Дмитрий Полянин... in С#
Они для того и внешние, что бы его куда-то передавать.
источник

ДП

Дмитрий Полянин... in С#
Остальное делается приватными методами и данными (private)
источник

ДП

Дмитрий Полянин... in С#
Почитай про public, private и internal
источник

N

Nik in С#
ну да, я делаю приватный массив, но для отображения значений надо было передать во вне, и тут получается хрень ибо уже по той ссылке я могу его вертеть как хочу. Это не есть хорошо, потому приходится возвращать его копию, и тут меня чет вставило, а что делать с большими массивами и если возвращать приходится часто. Это же капец просадки
источник

ДП

Дмитрий Полянин... in С#
Есть интерфейсы типа IReadonlyList для таких целей
источник

ДП

Дмитрий Полянин... in С#
Сам массив не изменить через этот интерфейс, я такими пользуюсь
IReadonlyList
IReadOnlyDictionary
источник

ДП

Дмитрий Полянин... in С#
Конечно у объектов в массиве по прежнему можно менять публичные данные
источник

N

Nik in С#
спасибо, погуглю
источник

ДП

Дмитрий Полянин... in С#
Если и это хочешь прикрыть, тогда надо делать типа IReadOnlyList<IMyReadOnlyObject>
источник

6

667 in С#
Nik
ну да, я делаю приватный массив, но для отображения значений надо было передать во вне, и тут получается хрень ибо уже по той ссылке я могу его вертеть как хочу. Это не есть хорошо, потому приходится возвращать его копию, и тут меня чет вставило, а что делать с большими массивами и если возвращать приходится часто. Это же капец просадки
Свойство с get но без set
источник

6

667 in С#
Сам массив приватный
источник

AM

Alexander Melodiev in С#
Добрый день. Кто-нибудь сдавал экзамены https://www.microsoft.com/ru-ru/learning/exam-70-486.aspx или https://www.microsoft.com/ru-ru/learning/exam-70-483.aspx
источник

AM

Alexander Melodiev in С#
Есть ли материалы для подготовки?
источник