• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

class 관련 질문

21.03.01 14:22 작성 조회수 118

0

우리가 cs파일을 생성하고 cs 파일 이름을 Program으로 하면

namespace CSharp

{

    // ==================== 1번 위치 ================

    

    class Progream

    {

        // ============ 2번 위치 ===============

        static void Main(string[] args)

        {

        }

    }

}

이런식으로 기본적인 코드가 발생합니다.

여기서 궁금한점이 있습니다.

1번지역에 class를 선언하는 것과 2번지역에 class를 선언하는 것에 무슨 차이가 있는건가요???

namespace CSharp

{

    // ==================== 1번 위치 ================

    class A

    { 

    

    }

    

    class Progream

    {

        // ============ 2번 위치 ===============

        class B

        {

        }

        static void Main(string[] args)

        {

            A a = new A();

            B b = new B();

        }

    }

}

위 코드의 A처럼 바깥에 class를 선언해도 Main 안에 객체를 찍는 것에는 문제가 없어보입니다.

어떤 점에서 차이가 있고 언제 1번지역에서 class를 선언하고 2번지역세어 class를 선언해야 하는지 궁금합니다.

답변 1

답변을 작성해보세요.

2

https://www.geeksforgeeks.org/nested-classes-in-c-sharp/

위 내용 확인 바랍니다.

class 내부에서 또 class를 선언하는걸 중첩 클래스(nested class)라 하고
참고로 C++에서 동일한 개념이 존재합니다.

테스트하실 때 Program 내부에 중첩 클래스를 만들고,
역시 Program 내부에 있는 static main에서 테스트를 했으니
별다른 차이가 없었지만,
그게 아니라 전혀 다른 클래스에서 중첩 클래스를 사용할 경우
OuterClass.InnerClass 형태로 사용해야 합니다.

답변 감사합니다!