C#의 중첩 클래스

Luqman Khan 2024년2월15일
  1. C#의 중첩 클래스
  2. C#에서 중첩 클래스를 사용하는 이유
  3. C#에서 중첩 클래스 구현
C#의 중첩 클래스

이 자습서에서는 C# 프로그래밍 언어의 중첩 클래스를 소개합니다.

클래스는 사용자가 정의하고 무언가를 빌드하는 데 사용되는 청사진 또는 패턴입니다. 메소드와 필드(액션을 정의하는 멤버 함수)를 결합한 단일 인스턴스입니다.

C#의 중첩 클래스

C#에서 사용자는 중첩 클래스라고 하는 다른 클래스 내부에 클래스를 정의할 수 있습니다. 주요 목적은 중첩 클래스의 범위를 제한하는 것입니다.

일반 클래스와 비교하여 중첩 클래스는 개인 수정자 및 보호의 추가 가능성을 제공합니다. 부모 클래스 컨텍스트 내에서만 이 클래스를 호출해야 하는 경우 일반적으로 이를 중첩 클래스로 정의하는 것이 좋습니다.

이 클래스가 라이브러리 외부에서 사용된다고 가정합니다. 일반적으로 두 클래스에 개념적 관계가 있는지 여부에 관계없이 사용자가 별도의 동일한 수준의 클래스로 정의하는 것이 더 쉽게 액세스할 수 있습니다.

공개 상위 클래스 내부에 공개 클래스를 중첩하는 것이 기술적으로 가능하더라도 이것은 거의 좋은 생각이 아닙니다.

C#에서 중첩 클래스를 사용하는 이유

중첩 클래스를 사용해야 하는 몇 가지 강력한 이유가 있습니다.

  • 한 번만 사용하는 클래스를 그룹화하는 실용적인 기술입니다.
  • 캡슐화가 개선되었습니다.
  • 중첩 클래스를 사용하면 코드를 더 쉽게 읽고 유지 관리할 수 있습니다.
  • 논리적인 클래스 그룹핑을 용이하게 합니다.

클래스가 하나의 다른 클래스에만 가치가 있는 경우 해당 클래스에 포함하여 두 클래스를 함께 유지하는 것이 좋습니다. 이러한 도우미 클래스를 중첩하면 더 간단해집니다.

공용 및 내부 액세스 수정자와 함께 중첩 클래스에는 개인 및 보호된 내부 액세스 수정자가 포함될 수 있습니다.

클래스 내에서 반환된 인터페이스를 구현하는 것이 유익한 경우가 있습니다. 그러나 해당 인터페이스의 구현은 외부 세계에서 완전히 숨겨져 있어야 합니다.

예를 들어 yield가 C#에 도입되기 전에 컬렉션 내부에 열거자 구현을 개인 클래스로 포함하여 빌드했습니다. 컬렉션 구성원은 간단한 액세스 권한을 갖지만 외부 세계는 이 작업이 수행되는 방법의 복잡성을 필요로 하지 않거나 볼 수 없습니다.

C#에서 중첩 클래스 구현

다음은 중첩 클래스의 개념을 설명하는 코드입니다.

Program 클래스는 public static main 메소드가 있는 프로그램의 기본 클래스입니다. 외부 클래스 Outside_class를 public으로 만들고 Inside_class라는 이름의 다른 클래스를 public으로 만들었습니다.

또한 Outside_class 내부와 Inside_class 내부의 두 가지 방법을 만들었습니다. Outside_class 개체에서 Inside_class 메서드에 액세스할 수 없습니다.

이 내부의 메소드에 액세스하려면 Inside_class의 인스턴스를 생성해야 합니다.

using System;

public class Program {
  public static void Main(string[] args) {
    // create instance of outside class
    Outside_class outinstance = new Outside_class();
    outinstance.outerclassmethod();
    // you can't access inside class methods from outside class objects
    // create instance of inside class
    Outside_class.Inside_class insideinstance = new Outside_class.Inside_class();
    // accessing the method of inside class.
    insideinstance.insideclassmethod();
    Console.Read();
  }
}
public class Outside_class {
  // Method of outside class
  public void outerclassmethod() {
    Console.WriteLine("here is Outside class method");
  }
  // Inner class
  public class Inside_class {
    // Method of inside class
    public void insideclassmethod() {
      Console.WriteLine("here is Inside class Method");
    }
  }
}

다음은 출력이 있는 중첩 클래스를 사용하는 코드 이미지입니다.

코드 중첩 클래스

중첩 클래스가 코드를 쉽게 읽을 수 있도록 한다는 것은 이미 분명합니다. 우리는 서로 함께 사용하는 모든 클래스를 통합할 수 있습니다.

관련 문장 - Csharp Class