Main()과 명령줄 인수(C# 프로그래밍 가이드)Main() and command-line arguments (C# Programming Guide)

Main 메서드는 C# 애플리케이션의 진입점입니다.The Main method is the entry point of a C# application. (라이브러리와 서비스에는 Main 메서드가 진입점으로 필요하지 않습니다.) 애플리케이션이 시작될 때 Main 메서드는 호출되는 첫 번째 메서드입니다.(Libraries and services do not require a Main method as an entry point.) When the application is started, the Main method is the first method that is invoked.

C# 프로그램에는 하나의 진입점만 있을 수 있습니다.There can only be one entry point in a C# program. Main 메서드가 있는 클래스가 둘 이상 있는 경우 /main 컴파일러 옵션으로 프로그램을 컴파일하여 진입점으로 사용할 Main 메서드를 지정해야 합니다.If you have more than one class that has a Main method, you must compile your program with the /main compiler option to specify which Main method to use as the entry point. 자세한 내용은 /main(C# 컴파일러 옵션)을 참조하세요.For more information, see /main (C# Compiler Options).

class TestClass
    static void Main(string[] args)
        // Display the number of command line arguments:


  • Main 메서드는 실행 가능한 프로그램의 진입점으로, 프로그램의 제어가 시작되고 끝나는 위치합니다.The Main method is the entry point of an executable program; it is where the program control starts and ends.
  • Main은 클래스 또는 구조체 내부에 선언됩니다Main is declared inside a class or struct. Main정적이어야 하며 공용일 필요가 없습니다.Main must be static and it need not be public. (앞의 예제에서는 기본 액세스 권한 개인을 받습니다.) 바깥쪽 클래스 또는 구조체는 정적일 필요가 없습니다.(In the earlier example, it receives the default access of private.) The enclosing class or struct is not required to be static.
  • Main에는 void 또는 int를 가지고 있거나 C# 7.1로 시작하거나 Task 또는 Task<int> 반환 형식을 가질 수 있습니다.Main can either have a void, int, or, starting with C# 7.1, Task, or Task<int> return type.
  • Main에서 Task 또는 Task<int>을 반환하는 경우에만 Main 선언에 async 한정자가 포함될 수 있습니다.If and only if Main returns a Task or Task<int>, the declaration of Main may include the async modifier. 이는 구체적으로 async void Main 메서드를 제외합니다.Note that this specifically excludes an async void Main method.
  • Main 메서드는 명령줄 인수를 포함하는 string[] 매개 변수 사용 여부에 관계 없이 선언될 수 있습니다.The Main method can be declared with or without a string[] parameter that contains command-line arguments. Visual Studio를 사용하여 Windows 애플리케이션을 만드는 경우 매개 변수를 수동으로 추가하거나 Environment 클래스를 사용하여 명령줄 인수를 얻을 수 있습니다.When using Visual Studio to create Windows applications, you can add the parameter manually or else use the Environment class to obtain the command-line arguments. 매개 변수는 0부터 시작하는 명령줄 인수로 읽힙니다.Parameters are read as zero-indexed command-line arguments. C 및 C++와 달리 프로그램의 이름이 첫 번째 명령줄 인수로 처리되지 않습니다.Unlike C and C++, the name of the program is not treated as the first command-line argument.

asyncTask, Task<int> 반환 형식을 추가하면 콘솔 애플리케이션을 시작해야 하고 비동기 작업을 Main에서 await해야 하는 경우에 프로그램 코드가 간소화됩니다.The addition of async and Task, Task<int> return types simplifies program code when console applications need to start and await asynchronous operations in Main.

C# 언어 사양C# language specification

자세한 내용은 C# 언어 사양을 참조하세요.For more information, see the C# Language Specification. C# 언어 사양은 C# 구문 및 사용법에 대한 신뢰할 수 있는 소스입니다.The language specification is the definitive source for C# syntax and usage.

참고 항목See also