내일배움캠프 Unity 9기/TIL

[Unity/TIL] - Top-level statements (최상위 문) / namespace(네임스페이스)

song-ssi 2025. 4. 16. 14:16

 

"Top-level statements must precede namespace and type declarations."

"최상위 문장은 네임스페이스나 타입 선언보다 앞에 있어야 합니다."

라고 오류가 뜬다.

 

해결방법

>>> 맨앞에 두거나 Main 메서드 안에 넣으면 오류가 없어진다. 

 

Top-level statements (최상위 문)

(C# 9이상)

main 매서드 안에 들어가지 않아도 맨위에 적을 시 자동으로 main 메서드 안에 넣은것과 같은 효과를 준다.

 

예전엔 프로젝트를 생성하면 Main() 메서드가 생겨서 그 안에 코드를 넣어서 실행시켜야 했다면

지금은 Main()메서드 없이 1줄로 사용가능하다. 

 

1줄로 보이지만 컴파일하면

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello");
    }
}

 

Main()안에 들어가있는 걸 볼 수 있다.

 


namespace (네임스페이스)

같은 이름의 클래스가 여러 개 있어도 충돌하지 않게 구분해주는 역할을 한다.

class Animal {
    public void Speak() => Console.WriteLine("I'm an animal!");
}

class Animal {
    public void Speak() => Console.WriteLine("나는 또 다른 동물!");
}

class 이름이 중복될 때

Animal

Animal

namespace Zoo {
    class Animal {
        public void Speak() => Console.WriteLine("I'm from the Zoo!");
    }
}

namespace Farm {
    class Animal {
        public void Speak() => Console.WriteLine("I'm from the Farm!");
    }
}

namespace로 구분해준다.

Zoo - Animal

Farm - Animal

var zooAnimal = new Zoo.Animal();
zooAnimal.Speak(); // → I'm from the Zoo!

var farmAnimal = new Farm.Animal();
farmAnimal.Speak(); // → I'm from the Farm!

불러올 때는

Zoo.Animal

Farm.Animal

 

using System;

using Sysem도 .NET 프레임워크의 기본 네임스페이스다. 선언해두면

System.Console.WriteLine("Hello");

이 문장을

Console.WriteLine("Hello");

이렇게 짧게 쓸 수 있다.

 

왜 씀?

큰 프로젝트에서 네임스페이스를 이용하면

1. 이름 충돌이 방지되고

2. 코드가 정리되며

3. 관리가 용이해진다.