![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Although a derived class can access protected members of its base class, it cannot do so through an instance of the base class.
С чем связано такое ограничение? -------------------- I don't need a reason being who I am... |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
QryStaL,
с тем, что в данном случае B выступает в роли клиента класса A, а protected поля не доступны клиентам. всё дело в семантике использования класса A -------------------- СУВ, Partizan. |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Не совсем понятна эта фраза. Если я напишу след. код:
то все нормально скомпилится. -------------------- I don't need a reason being who I am... |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
QryStaL, а почему этот код не должен скомпилиться? Класс C знает о своём внутреннем устройстве посему и внутри себя он как хочет может манипулировать объектами этого класса
-------------------- СУВ, Partizan. |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 14 Всего: 32 |
Partizan, правильно, по той же логике в первом примере класс B унаследован от класса A и поэтому имеет доступ к его protected членам.
-------------------- I don't need a reason being who I am... |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 18 Всего: 67 |
QryStaL, в одном случае класс является клиентом сам себя, а во втором один класс является клиентом второго класса
-------------------- СУВ, Partizan. |
|||
|
||||
| pr0fess0r |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 15.8.2008 Репутация: нет Всего: 1 |
protected void Do() использование ограничено классом, в котором он определен
из MSDN: Error Message Cannot access protected member 'member' via a qualifier of type 'type1'; the qualifier must be of type 'type2' (or derived from it) Although a derived class can access protected members of its base class, it cannot do so through an instance of the base class. The following sample generates CS1540:
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |