C\#9.0 새로운 특성 에 대한 상세 한 설명―최상 위 프로그램 문구(Top-Level Programs)

1 배경 과 동기
보통 C\#콘 솔 에'Hello World!'한 줄 만 인쇄 하려 면이것 은 Console.WriteLine("Hello World!")이 아 닙 니 다.한 문장 으로 해결 할 수 있 고 다른 필요 한 기초 코드(예 를 들 어 정의 클래스 와 입구 함수 Main)도 포함한다.예 를 들 어 다음 과 같다.

using System;
class Program
{
  static void Main()
  {
    Console.WriteLine("Hello World!");
  }
}
"Hello World!"한 마디 만 인쇄 해 주세요.이렇게 많아이것 은 초보 자 들 에 게 번 거 로 울 뿐만 아니 라 코드 를 어 지 럽 히 고 들 여 쓰기 도 증가 시 켰 다.이런 문 제 를 해결 하기 위해 최고급 코드 문구 라 는 새로운 특성 을 제시 했다.
2 최상 위 문장
소개
C\#9.0 에 서 는 Class 의 정의 와 주 함수 Main 의 성명 을 생략 하고 핵심 업무 코드 만 쓰 면 최상 위 문장 이 됩 니 다.위의 이 코드 를 우 리 는 최고급 문장 으로 쓸 수 있다.

using System;

Console.WriteLine("Hello World!");
이렇게 하면 코드 가 간결 하고 뚜렷 해서 초보 자 들 이 이해 하기 쉽다.약간 파 이 썬 느낌 나 지 않 아 요?물론 어떤 문구 도 허용 된다.만약 당신 이 값 을 되 돌려 주 고 싶다 면,당신 은 그렇게 할 수 있 습 니 다.당신 이 await 를 사용 하고 싶 어도 그렇게 할 수 있 습 니 다.명령 행 인자 에 접근 하려 면 args 도 사용 할 수 있 습 니 다.네가 로 컬 함 수 를 사용 하고 싶 어도 괜찮다.
모든 코드 를 사용 할 수 있 지만 지 켜 야 할 규칙 이 있 습 니 다.
최상 위 문 구 는 using 구문 코드 뒤에 두 어야 합 니 다4.567917.최고급 문 구 는 모든 유형 이나 네 임 스페이스 성명 의 앞 에 사용 해 야 합 니 다4.567917.최고급 문 구 는 하나의 소스 코드 파일 에 만 쓸 수 있 고 지금 처럼 main 방법 만 쓸 수 있 습 니 다4.567917.최상 위 구문 에서 정 의 된 로 컬 함수 와 변 수 는 최상 위 코드 세그먼트 외부 어느 곳 에서 든 호출 하 는 데 오류 가 발생 할 수 있 습 니 다아래 의 이 코드 는 비교적 좋 은 예 이다.

using static System.Console;
using System.Threading.Tasks;

WriteLine("Hello,");
Print(args[0]);
await Task.Delay(1000);
return 0;

void Print(string arg)
{
  WriteLine(arg);
}
2.2 원리
우 리 는 C\#대상 을 대상 으로 하 는 프로 그래 밍 언어 로 서 모든 유형 이 대상 을 대상 으로 하 는 것 이 고 유형 과 구성원 의 정의 가 있어 야 한 다 는 것 을 알 고 있다.최고급 문 구 는 겉 으로 는 이 규칙 을 어 긴 것 처럼 보이 지만 실제로는 없다.최상 위 문 구 는 결국 컴 파일 할 때 전체 생명 공간 에서 Program 류 의 Main 방법론 의 코드 로 자동 으로 생 성 되 기 때문이다.다음 과 같다.

static class Program
{
  static async Task Main(string[] args)
  {
    //     
  }
}
주의해 야 할 것 은 이곳 의 유형 명 Program 과 방법 명 Main 은 예 를 들 었 을 뿐 컴 파일 러 에서 생 성 된 것 은 이 이름 이 아니다.우 리 는 IL 코드 를 통 해 이 점 을 확인 할 수 있다.

최상 위 문장 에 비동기 동작 과 반환 값 이 있 는 지 여부 에 따라 생 성 된 입구 함수 서명 도 다르다.구체 적 인 것 은 아래 표 와 같다.
반환 값 존재
반환 값 없 음
존재 비동기
async static Task Main(string[] args)
async static Task Main(string[] args)
비동기 없 음
static int Main(string[] args)
static void Main(string[] args)
예 를 들 어 위의 코드,생 성 된 입구 함수
$는 다음 코드 와 같 습 니 다.

static class Program
{
  async static Task<int> Main(string[] args)
  {
    WriteLine("Hello");
    Print(args[0]);
    await Task.Delay(1000);
    return 0;

    void Print(string arg)
    {
      WriteLine(arg);
    }
  }
}
3 끝 말
최고급 문 구 를 사용 하면 우리 의 인 코딩 작업 을 간소화 하고 코드 를 간결 하고 선명 하 게 보이 게 할 수 있 으 며 초보 자 에 게 도 우호 적 이 며 본질 적 으로 C\#언어의 원래 문법 구 조 를 바 꾸 지 않 았 다.모든 문 구 를 사용 할 수 있 고 추가 적 인 제한 이 없 으 며 이런 측면 에서 볼 때 긍정 적 인 변화 이다.
이상 은 C\#9.0 새로운 특성 에 대한 상세 한 설명 입 니 다.최상 위 프로그램 문구(Top-Level Programs)의 상세 한 내용 입 니 다.C\#9.0 새로운 특성 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기