Рассмотрим следующий пример кода:Почему вложенные классы «унаследованы»?
class Outer
{
public class Nested { }
}
class SubOuter : Outer { }
class Test
{
Test()
{
Outer.Nested x; // Makes sense.
SubOuter.Nested y; // Compiles, but why?
}
}
Вероятно, вложенный класс «по наследству» от подкласса. Где смысл в этом? Что я могу сделать с этой функцией, которую я не могу (или не могу легко) сделать иначе? Не соответствуют ли Outer.Nested
и SubOuter.Nested
эквивалентным?
Разъяснение: Конечно, он компилирует потому, что C# спецификация говорит так. Я это понимаю. Я спрашиваю почему C# был спроектирован таким образом, так как он, кажется, не добавить что-то на язык. Если у вас есть пример обратного, то есть некоторый код, который становится проще/короче/лучше, используя эту функцию, пожалуйста, поделитесь ею в ответ, и я с удовольствием приму это.
потому что 'Nested' является общедоступным, поэтому класс SubOuter может видеть его в базовом классе. –
Где проблема, почему вы не хотите, чтобы это было скомпилировано. –
'Outer.Nested' и' SubOuter.Nested' эквивалентны, в них нет различий, кроме способа объявления. –