TLP에서 Program 클래스 기능 확장

닷넷 6 RC1부터는 TLP로 코드를 시작했어도 Program 클래스를 참조하고, partial 키워드를 이용해 클래스에 다른 멤버를 추가할 수 있습니다.

https://twitter.com/davidfowl/status/1439334729178775558?s=21

1개의 좋아요

흥미롭네요. partial Program이 된다먼 메소드, 속성 접근에 대한 TLP 활용도 가능하겠군요.

좋습니다!

1개의 좋아요

TLP(최상위문)에서의 코드는 C#의 로컬 함수의 기능 덕분에 메인 진입점 없이 코딩을 전개하는 파이썬 같은 언어처럼 바로 검증 코드를 전개할 수 있다는 편리함이 있어 유용합니다. 개인적으로는 학생 교육 시 실행되는 간단한 코드를 공유할 수 있어서 좋았는데요, 한 가지 아쉬웠던 점은 C#에 로컬 속성이 없기 때문에 다음의 코드는 문법적 오류입니다.

string Version => "1.0"; // 오류임!

Console.WriteLine(Version);

그런데 정현님이 공유 주신 내용을 보고 다음처럼 코드를 전개해보았는데 잘 됩니다!

Console.WriteLine(Version);

partial class Program
{
    public static string Version => "1.0";
}

잘되네요!

한 가지 아쉬운 점은 TLP는 Program의 Main()메소드 영역에서 구동이 되는 것이고, 여전히 필드를 참조하는 속성은 만들 수 없다는 점입니다.

1개의 좋아요

하지만 Program의 인스턴스는 의미적으로 하나여야 하기 때문에 그냥 정적 필드를 사용하고 그것을 참조하여 반환하는 정적 속성을 이용하는 것도 나쁜 선택은 아닌 것 같습니다.

Console.WriteLine(Version);

static partial class Program
{
    private static string _version;

    public static string Version => _version;
}

1개의 좋아요