C #: конструктор вложенного класса делает «недоступным из-за уровня защиты»

У меня есть эта часть кода, и возникает ошибка, только потому, что я поместился в конструктор для своего класса.

class NestedClass
{
   class A
   {
      A() {}
   }

   class B
   {
      //no constructor
   }

   public static void run()
   {
     A a = new A(); //error
     B b = new B();//no error
   }
}

И ошибка:

NestedExample.A is inaccessible due to protection level

Пожалуйста, помогите мне объяснить это.

Благодаря :)

3

6 ответы

Ваш конструктор private . Модификатор доступа по умолчанию для членов класса private .

   class A
   {
      A() {}
   }

это правильная реализация

   class A
   {
      public A() {}
   }
7
добавлено
Благодарю. Я исхожу из java, поэтому я считаю, что дефолт для членов класса является общедоступным: D
добавлено автор hqt, источник
@hqt, я думаю, что в Java по умолчанию используется package , который виден внутри пакета. См. это
добавлено автор Habib, источник
5
добавлено

Определить конструктор как общедоступный

public class A
{
    public A() {}
}
3
добавлено

Ваш конструктор A является закрытым. К нему нельзя получить доступ за пределами A. В то же время B вообще не имеет консуктора и, следовательно, получает публичный конструктор по умолчанию.

3
добавлено

you need to specify, the default one is private and while in the case of B the compiler provides a public parameterless constructor for you., so you have to specify it for class A

class A
{
    public A() { }
}
1
добавлено

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

0
добавлено
Как изменение класса для общественности решит проблему?
добавлено автор ryadavilli, источник
Действительно, вы правы в отношении конструктора, который просто должен быть общедоступным. Виноват.
добавлено автор TimVK, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Software Design and OOP
Software Design and OOP
1 481 участник(ов)

OOP, software design, architecture, GRASP, GoF, SOLID, separation of concerns, безысходность. Пожалуйста, придерживайтесь указанных тем. https://oopru.github.io More cool stuff: @fp_ru @tdd_ru @coding_interview_ru @coding_ru

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot