C# 콘솔 앱 템플릿은 최상위 문을 생성합니다.
.NET 6부터 새 C# 콘솔 앱용 프로젝트 템플릿은 Program.cs 파일에 다음 코드를 생성합니다.
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
새 출력은 프로그램에 대해 작성하는 데 필요한 코드를 간소화하는 최신 C# 기능을 사용합니다. .NET 5 및 이전 버전의 경우 콘솔 앱 템플릿은 다음 코드를 생성합니다.
using System;
namespace MyApp
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
앞의 코드에서 실제 네임스페이스는 프로젝트 이름에 따라 달라집니다.
이러한 두 양식은 동일한 프로그램을 나타냅니다. 둘 다 C#에서 유효합니다. 최신 버전을 사용하는 경우 Main
메서드의 본문만 작성하면 됩니다. 컴파일러는 진입점 메서드를 사용하여 Program
클래스를 생성하고 모든 최상위 문을 해당 메서드에 배치합니다. 생성된 메서드의 이름은 Main
가 아니며, 이는 코드에서 직접 참조할 수 없는 구현 세부 사항입니다. 다른 프로그램 요소를 포함할 필요가 없으며 컴파일러에서 자동으로 생성합니다. C# 가이드의 기본 사항 섹션에 있는 최상위 문 문서에서 최상위 문을 사용할 때 컴파일러가 생성하는 코드에 대해 자세히 알아볼 수 있습니다.
.NET 6+ 템플릿을 사용하도록 업데이트되지 않은 자습서를 사용할 수 있는 두 가지 옵션이 있습니다.
- 새 프로그램 스타일을 사용하여 기능을 추가할 때 새 최상위 문을 추가합니다.
-
Program
클래스와Main
메서드를 사용하여 새 프로그램 스타일을 이전 스타일로 변환합니다.
이전 템플릿을 사용하려면 이 문서의 뒷부분에 있는 이전 프로그램 스타일 사용을 참조하세요.
새 프로그램 스타일 사용
새 프로그램을 더 간단하게 만드는 기능은 최상위 문, 전역 using
지시문 , 그리고 암시적 using
지시문 입니다.
최상위 문 용어는 컴파일러가 주 프로그램에 대한 클래스 및 메서드 요소를 생성한다는 것을 의미합니다. 컴파일러에서 생성된 클래스 및 진입점 메서드는 전역 네임스페이스에 선언됩니다. 새 애플리케이션의 코드를 살펴보고, 이전 템플릿에서 생성된 Main
메서드를 전역 네임스페이스 내의 문장들과 함께 포함한다고 상상할 수 있습니다.
기존 스타일에서 Main
메서드에 더 많은 문을 추가할 수 있는 것처럼 프로그램에 문을 더 추가할 수 있습니다. 액세스 public
또는 protected
)를 포함할 수 없습니다.
최상위 문과 암시적 using
지시문은 애플리케이션을 구성하는 코드를 간소화할 있습니다. 기존 튜토리얼을 따르려면 템플릿에서 생성된 Program.cs 파일에 새로운 문을 추가합니다. 작성하는 문이 튜토리얼의 지침에 있는 Main
메서드의 시작 중괄호와 종료 중괄호 사이에 위치한다고 상상해 보세요.
이전 형식을 사용하려는 경우 이 문서의 두 번째 예제에서 코드를 복사하고 이전과 같이 자습서를 계속할 수 있습니다.
"최상위 문에 대한 자세한 내용은 최상위 문자습서 탐색에서 확인할 수 있습니다."
암시적 using
지시문
암시적 using
지시문 용어는 컴파일러가 프로젝트의 유형에 따라 using
지시문 집합을 자동으로 추가한다는 것을 의미합니다. 콘솔 애플리케이션의 경우 다음 지시문은 애플리케이션에 암시적으로 포함됩니다.
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
다른 애플리케이션 유형에는 해당 애플리케이션 유형에 공통적인 더 많은 네임스페이스가 포함됩니다.
암시적으로 포함되지 않은 using
지시문이 필요한 경우 최상위 문이 포함된 .cs 파일 또는 다른 .cs 파일에 추가할 수 있습니다. 애플리케이션의 모든 .cs 파일에 필요한 using
지시문의 경우에는 전역 using
지시문을 사용합니다.
암시적 using
지시문 사용 안 함
이 동작을 제거하고 프로젝트의 모든 네임스페이스를 수동으로 제어하려면 다음 예제와 같이 <PropertyGroup>
요소의 프로젝트 파일에 <ImplicitUsings>disable</ImplicitUsings>
추가합니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<ImplicitUsings>disable</ImplicitUsings>
</PropertyGroup>
</Project>
전역 using
지시문
전역 using
지시문은 전체 애플리케이션에 대해 네임스페이스를 불러오며, 단일 파일에 국한되지 않습니다. 이러한 전역 지시문은 프로젝트 파일에 <Using>
항목을 추가하거나 코드 파일에 global using
지시문을 추가하여 추가할 수 있습니다.
프로젝트 파일에 Remove
특성이 있는 <Using>
항목을 추가하면 특정 암시적 using
지시문를 제거할 수 있습니다. 예를 들어, <ImplicitUsings>enable</ImplicitUsings>
과 함께 암시적 using
지시 기능이 켜져 있는 경우, 다음 <Using>
항목을 추가하면 암시적으로 가져온 네임스페이스에서 System.Net.Http
네임스페이스가 제거됩니다.
<ItemGroup>
<Using Remove="System.Net.Http" />
</ItemGroup>
이전 프로그램 스타일 사용
.NET SDK 6.0.300부터 console
템플릿에는 --use-program-main
옵션이 있습니다. 최상위 문을 사용하지 않고 Main
메서드가 있는 콘솔 프로젝트를 만드는 데 사용합니다.
dotnet new console --use-program-main
생성된 Program.cs
는 다음과 같습니다.
namespace MyProject;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
Visual Studio에서 이전 프로그램 스타일 사용
새 프로젝트를 만들 때 설정 단계는 추가 정보 설정 페이지로 이동합니다. 이 페이지에서 최상위 문을 사용하지 않음을 나타내는 확인란을 선택합니다.
프로젝트를 만든 후
Program.cs
콘텐츠는 다음과 같습니다.namespace MyProject; class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } }
메모
Visual Studio는 동일한 템플릿을 기반으로 프로젝트를 다시 만들 때 옵션 값을 유지하므로, 다음번에 콘솔 앱 프로젝트를 만들 때 "최상위 문 사용 안 함" 확인란이 기본적으로 선택 해제됩니다.
Program.cs
파일의 콘텐츠는 전역 Visual Studio 텍스트 편집기 설정 또는 EditorConfig
파일에 정의된 코드 스타일과 일치하도록 다를 수 있습니다.
자세한 내용은 EditorConfig 및 옵션, 텍스트 편집기, C#, 고급사용하여 이식 가능한 사용자 지정 편집기 설정 만들기를 참조하세요.
.NET