C# 중첩 클래스는 하위 클래스가 아니며 주변 클래스는 다른 네임 스페이스와 비슷합니다. 내부 클래스에서 외부 클래스의 인스턴스에 액세스 할 수 없습니다 (예 : Java와 반대). 그래서 정적 클래스는 중첩 된 유형을 포함 할 수 있습니다.
유명한 예로 LINQ class Enumerable
은 정적입니다. 여기에는 많은 도우미 클래스가 포함됩니다.
public static class Enumerable
{
// many static LINQ extension methods...
class WhereEnumerableIterator<TSource> : Iterator<TSource>
{
// ...
}
internal class EmptyEnumerable<TElement>
{
public static readonly TElement[] Instance = new TElement[0];
}
public class Lookup<TKey, TElement> : IEnumerable<IGrouping<TKey, TElement>>, ILookup<TKey, TElement>
{
// ...
}
// many others
}
주변의 정적 클래스는 내부 클래스의 논리적 컨테이너입니다. 그것은 정적 클래스에서 사용되기 때문에 거기에 속하며 다른 곳에서 액세스 할 수없는 경우가 많습니다 (공용이 아닌 경우).
하지만 맞아요, 문서가 부족합니다. 그들은 말했다해야합니다
는 정적 구성원 또는 중첩 유형
내 부분에
나쁜 표현이 들어, 나는 중첩 된 클래스 말을 의미했다. –
나는 당신이 명백한 것을 놓치고 있다고 말할 것이다. 정적 인 클래스의 주요 목적은 그 클래스의 인스턴스화를 방지하는 것이다. – Phil1970
중첩 된 클래스는 * 정적 클래스 *인지 여부에 관계없이 해당 둘러싸는 클래스의 * 정적 멤버 *로 간주합니다. (중첩 된 클래스가 항상 둘러싸는 클래스의 정적 멤버가 아닌 Java와는 달리, "정적 클래스"라는 용어는 정적 멤버 인 중첩 클래스를 의미합니다. –