Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> А как добавить сеттер к свойству? 
V
    Опции темы
Dims
Дата 5.11.2008, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1016
Регистрация: 21.11.2006

Репутация: нет
Всего: 11



Цитата(diadiavova @  5.11.2008,  01:25 Найти цитируемый пост)
То есть значение свойству было присвоено, несмотря на то, что в базовом классе сеттер пустой.

Всё правильно, у Вас же mcc имеет тип MyChildClass, а у него сеттер не пустой.
PM MAIL   Вверх
diadiavova
Дата 5.11.2008, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Ну так ясный перец не пустой. Вопрос был: как добавить сеттер. Это ответ.
Если речь о том, как добавить сеттер к ридонли свойству - тогда ответ один - затенение smile . Создаётся такое же свойство, в геттере возвращается значение одноимённого свойства базового класса, в сеттере - собственная реализация.

Или я чего-то не понял?


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
PashaPash
Дата 5.11.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 9
Всего: 49



Цитата(Dims @  4.11.2008,  23:28 Найти цитируемый пост)
А в чём разница кроме терминологии? Интерфейс -- это всё равно нечто предельно абстрактное. Если к старым требованиям добавляются новые, то чем это не наследование?

В том и проблема, что не добавляются методы. 
Код

interface A
{
   void MethodA();
}

interface B : A
{
   void MethodB();
}

В интерфейсе A один метод, и в интерфейсе B один метод. И класс может реализовать отдельно A и отдельно B. Скажем, B - implicitly, а А - explicitly:
Код

    class C : B
    {
        public void MethodB()
        {
            throw new NotImplementedException();
        }

        void A.MethodA()
        {
            throw new NotImplementedException();
        }
    }

И тогда у класса C будет public метод MethodB, но не будет метода MethodA. Свойства, которые как бы цельный объект с точки зрения CLR, такого не переживут. Более того, если ты объявляешь свойство с тем же именем в B, то оно не дополнит свойство из A, а просто потребует от С реализовать два свойства с одинаковым именем, о чем тебя и предупреждает компилятор.

Это сообщение отредактировал(а) PashaPash - 5.11.2008, 20:38


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0426 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.