2014-12-10 2 views
1

В Java, если два класса определены внутри одного класса верхнего уровня, они имеют доступ к частным членам друг друга (поля, конструкторы, методы). Поэтому в ситуации, подобной следующей, вы можете использовать все частные члены ClassA внутри ClassB и наоборот.Доступ к закрытым членам из других классов

public class TopLevelClass { 

    private static class ClassA { 
     // Code omitted 
    } 

    private static class ClassB { 
     // Code omitted 
    } 
} 

Можете ли вы сделать что-нибудь подобное в C#?

ответ

2

Даже с вложенными классами на C# два отдельных (не вложенных друг в друга) класса не могут обращаться к частным членам друг друга (хотя они совместно используют родителя). Они могут однако получить доступ к частным членам родительского класса.

Вы можете получить доступ к частным членам, используя отражение, если вам действительно нужно, хотя, конечно, если вам нужен доступ к ним, они, вероятно, не должны быть private.

См. Nested Types для получения дополнительной информации.

+0

Помогло ли downvoter прокомментировать? – BradleyDotNET

+0

Спасибо. Я думал, что это был ответ - я просто хотел подтверждения. Один из подходов, который я нахожу полезным в Java, - это писать вспомогательные классы, которые используются только для класса верхнего уровня, в котором они определены. Для этих классов я могу просто сделать все частным и не нужно беспокоиться о написании методов доступа , –

+0

@pbabcdefp Всегда есть авто-свойства :) – BradleyDotNET

Смежные вопросы