|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.10.2011, 21:36 | #1 |
Форумчанин
Регистрация: 13.10.2011
Сообщений: 143
|
Как "спрятать" константу
Столкнулся со следующей проблемой:
В классе есть ссылочное свойство, нужно чтобы его можно было получить, но нельзя было изменить. Модификатор readonly не позволяет задавать лишь ссылку (и то лишь напрямую), но позволяет менять ее свойства. Аналогично с аксессорами get/set. Можно ли запретить любые ее изменения без использования метода Clone? Вот что я имею в виду: Код:
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
|
23.10.2011, 22:54 | #2 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 822
|
Можно сделать set приватным, а get public.
Не давай организму поблажки, каждый день тренируй его в шашки..
|
24.10.2011, 07:19 | #3 |
Наркоман самоучка
Форумчанин
Регистрация: 22.07.2007
Сообщений: 276
|
Можно ввести булеву переменную - isLock. Если она true, то выдаём исключение InvalidOperation, либо просто возвращаем default значение типа свойства.
#include <мозг.h>
|
24.10.2011, 07:51 | #4 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
В случае с простыми типами пойдёт вариант, который предложил Скарам:
Код:
|
24.10.2011, 10:35 | #5 |
Форумчанин
Регистрация: 15.12.2010
Сообщений: 398
|
Зачем приватный сет ... начинаете же правильно
Код:
|
24.10.2011, 10:54 | #6 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Код:
|
|
24.10.2011, 15:05 | #7 |
Форумчанин
Регистрация: 13.10.2011
Сообщений: 143
|
Приведенный мною код не совсем отражает суть проблемы, так как вместо string действительно стоит ссылочный тип. Поэтому я извиняюсь и выкладываю оригинал, породивший вопрос)
Код:
Если написать Код:
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
Последний раз редактировалось Lasur; 24.10.2011 в 15:18. |
24.10.2011, 15:54 | #8 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Код:
|
24.10.2011, 16:04 | #9 |
Форумчанин
Регистрация: 13.10.2011
Сообщений: 143
|
Алгоритм решения понятен, спасибо за ответы.
Все имена, фамилии, ники, даты и события упоминаемые в моих постах, являются вымышленными. Все совпадения с реально существующими - случайны.
|
24.10.2011, 21:40 | #10 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Lasur
readonly поля должны быть получаемыми, но не изменяемыми отдавайте в get интерфейс, у которого нет set-методов
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? | vedro-compota | JavaScript, Ajax | 10 | 14.12.2010 21:05 |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. | Каравай | Microsoft Office Excel | 13 | 17.02.2010 09:53 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Как сделать ссылку на "константу"? | Loobtuff | Microsoft Office Excel | 2 | 21.09.2007 13:29 |