2009-07-28 4 views
4

아주 최근까지는 정상적인 클래스와 내부 클래스/하위 클래스 사이에 차이가 있음을 깨닫지 못했습니다.C#의 내부 클래스

내부 클래스의 인스턴스와 내부 클래스의 인스턴스가 서로 다른 점은 무엇입니까?

답변

15

Java와 달리 C# 포함 클래스는 중첩되어 있습니다. 클래스 인스턴스를 포함하는 것과 포함 된 클래스의 인스턴스 간에는 아무런 관련이 없습니다. 포함 된 클래스는 포함 된 클래스의 액세스 가능성을 제어하고 네임 스페이스가 오염되지 않도록 C#에서 사용됩니다.

는 (일부 기업은 클래스를 포함, 각 클래스가 자신의 파일에 가야 코딩 표준이 작은 클래스 그 라운드 방법입니다.) 내부 클래스가있다 자바 인스턴스 (객체)에서

포인터를 바깥 쪽 클래스로 되돌립니다. 이것은 Java에서 수행되었습니다. 이벤트를 처리하는 데 작은 클래스를 많이 사용하기 때문입니다. C#에는 위임자가 있습니다.

(포함 된 클래스는 모두가 좋아하지만, 정말 시간의 시험을 증명하지 않았다 자바에서 실험 이상 중 하나였다. C#이 많은 나중에 따라 오는, 그것은 잘 작동하지 않았다 무엇을 자바에서 배울 수)

1

C# - 포함 된 클래스는 중첩되어 있습니다. containg 클래스 인스턴스와 포함 된 클래스의 인스턴스 간에는 아무런 관련이 없습니다.

6

.NET에는 Java와 같은 내부 클래스가 없습니다. 중첩 클래스가 있습니다.

사용 이유는 클래스의 액세스 가능성을 제어하는 ​​것입니다.

4

C#에서는 일반 클래스와 내부 클래스 사이에 최소한 3 가지 차이점이 있습니다. 내부 클래스와 내부 클래스는 내부 클래스와 내부 클래스를 포함하는 외부 클래스 사이의 관계를 형성 할 수도 있습니다.

  • 내부 클래스는 내부 클래스, 보호 된 내부 클래스 또는 개인 클래스로 선언 할 수 있지만 일반 클래스는 그렇지 않습니다.
  • 내부 클래스는 해당 클래스의 이름을 사용하지 않고 포함하는 외부 클래스의 정적 멤버에 액세스 할 수 있습니다.
  • 내부 클래스가 외부 클래스의 인스턴스에 액세스 할 때 정적이 아니더라도 해당 개체의 개인 멤버에 액세스 할 수 있습니다.