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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы, abstract, partial, public, private... 
:(
    Опции темы
MasterOfCode
Дата 28.8.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Сталкнулся с такой проблемой. Создаю некий класс-Block. На основе этого класса создаю еще классы вот например так:

Код

class Block
{
    protected int index;
}

public class MainClass
{
    //создаю наследника
    private class VersionBlock : Block
    {
        public int version;
    }
    public VersionBclock versionBlock; // Ошибка 
}



Ошибка: Inconsistent accessibility: field type 'MainClassNS.MainClass.VersionBlock' is less accessible than field 'MainClassNS.MainClass.versionBlock

Че за ошибка? Как ее исправить?


--------------------
user posted image
PM ICQ   Вверх
QryStaL
Дата 28.8.2008, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(MasterOfCode @  28.8.2008,  09:39 Найти цитируемый пост)
Как ее исправить?

Почитать в MSDN, что такое accessibility domain.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
HalkaR
Дата 28.8.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



class Block
замени на
public class Block

Добавлено через 45 секунд
Или перенеси Block в MainClass.
PM MAIL   Вверх
Alekz
Дата 28.8.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 5.2.2008
Где: Запорожье, Украин а

Репутация: 1
Всего: 2



Цитата(HalkaR @ 28.8.2008,  09:53)
class Block
замени на
public class Block

Добавлено @ 09:54
Или перенеси Block в MainClass.

Не совсем

В public классе открытое поле private типа...
т.е. "клиент" может получить доступ к экземпляру, не имея доступа к типу.

Это сообщение отредактировал(а) Alekz - 28.8.2008, 09:57
PM MAIL   Вверх
MasterOfCode
Дата 28.8.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



QryStaL, если ты знаешь accessibility domain, мог бы в кратце объяснить? ;)

Манипуляции по перемещению классов, непомогли :(


--------------------
user posted image
PM ICQ   Вверх
HalkaR
Дата 28.8.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



Alekz, да сорри, неправильно трактовал ошибку.
PM MAIL   Вверх
QryStaL
Дата 28.8.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(MasterOfCode @  28.8.2008,  09:39 Найти цитируемый пост)
public VersionBlock versionBlock; // Ошибка 


Поле public, а тип VersionBlock private. Непонятно, зачем nested class. Его нужно или вынести из MainClass, или сделать public.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
MasterOfCode
Дата 28.8.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27




Цитата(QryStaL @  28.8.2008,  11:26 Найти цитируемый пост)
Поле public, а тип VersionBlock private. Непонятно, зачем nested class. Его нужно или вынести из MainClass, или сделать public.

Ну а что такого. Я могу создать переменную private int index, например, вставить в класс  public int Index { get{return index;}}

так и тут хочу. Создать некий базовый класс блок. На его основе создать еще несколько классов, которые чем то будут отличаться. 
Вынес вложеный класс, ошибка та же.


--------------------
user posted image
PM ICQ   Вверх
QryStaL
Дата 28.8.2008, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Ты путаешь наследование со вложенностью. 

Цитата(MasterOfCode @  28.8.2008,  11:41 Найти цитируемый пост)
Вынес вложеный класс, ошибка та же.

Ошибка не может быть та же, так как классы верхнего уровня не бывают private.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
MasterOfCode
Дата 28.8.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Цитата(QryStaL @  28.8.2008,  11:56 Найти цитируемый пост)
Ошибка не может быть та же

Оказывается может. Избавился от нее только если даю классу public и элементу тоже public
Вообщем если я делаю унаследованый класс public, и создаю переменную типа унаследованного класса, то она тоже должна быть public. Мне вот это непонятно. 



--------------------
user posted image
PM ICQ   Вверх
QryStaL
Дата 28.8.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



Цитата(MasterOfCode @  28.8.2008,  12:04 Найти цитируемый пост)
Вообщем если я делаю унаследованый класс public, и создаю переменную типа унаследованного класса, то она тоже должна быть public. Мне вот это непонятно. 

Наоборот. Область видимости поля не может быть больше области видимости его типа.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
MasterOfCode
Дата 28.8.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



Вот я тупанул, походу. Я то вот что думал:
Если я создаю класс внутри класса и делаю его паблик, то я могу получить доступ к этому классу из экземпляра, например так:
Код

    public class ClassMain
    {
        public Class_B FClass_B;
        public class Class_B : Class_A { }
        public class Class_A { }
    }
    public class cClass
    {
        ClassMain cm;
        public cClass()
        {
            cm.Class_B cb; // Думал что так будет можно сделать. Ошибся ))
        }
    }





--------------------
user posted image
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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