전처리기의 C# 매크로 정의

Harshit Jindal 2023년10월12일
  1. C#에서 정적 using 선언 사용
  2. Wrap 함수를 C# 정적 클래스로 사용
전처리기의 C# 매크로 정의

언어로서의 C#은 매크로를 지원하지 않습니다. C 및 C++와 같은 전처리기는 없습니다.

그러나 C#에는 C# 프로젝트 파일 내에 빌드 전 C/C++ 프로그램을 추가하여 전처리기 기능과 매크로를 모방하는 프로젝트 파일이 있습니다.

이 방법은 원하는 결과를 얻을 수 있지만 프로덕션에서 이러한 트릭을 사용하는 것은 매우 권장되지 않으며 때때로 예기치 않은 동작으로 이어질 수 있습니다.

최신 버전의 C#을 사용하면 특정 매크로를 모방할 수 있으며 C# 프로젝트 파일을 C/C++ 응용 프로그램으로 조작하는 것보다 매크로를 사용하는 것이 좋습니다. 이 자습서에서는 C#에서 기능과 같은 매크로를 사용하는 방법을 살펴봅니다.

C#에서 정적 using 선언 사용

선언적을 사용하는 static의 도움으로 매번 클래스 이름 입력을 생략할 수 있습니다. 정적 선언으로 Namespaceclass Name의 지속적인 재사용을 줄입니다.

using static System.Console;  // Note the static keyword

public class Program {
  public static int Main(string[] args) {
    WriteLine("C# macro!!");

    return 0;
  }
}

출력:

C# macro!!

위의 예에서 정적 선언은 모든 콘솔 관련 명령과 함께 SystemConsole의 지속적인 재사용을 줄입니다. 훨씬 적은 양의 코드를 작성할 수 있는 멋진 매크로를 제공합니다.

이를 모든 C# 라이브러리와 함께 사용하여 모든 교차 어셈블리 호출을 수행할 수 있습니다.

Wrap 함수를 C# 정적 클래스로 사용

public static 클래스를 선언하고 그 안에 wrapping C# 기능을 선언하여 매크로를 사용할 수 있습니다. 정적 초기화는 나머지 코드보다 먼저 발생하며 매크로의 전처리 측면을 모방하는 데 도움이 됩니다.

using System;
public static class WriteToConsoleExtension {
  public static void WriteToConsole(this object instance, string format, params object[] data) {
    Console.WriteLine(format, data);
  }
}
public class Program {
  public static int Main(string[] args) {
    Program p = new Program();
    p.WriteToConsole("C# macros!! {0}st method", 1);

    return 0;
  }
}

산출

C# macros!! 1st method

위의 예에서 우리는 원하는 매크로로 이름이 변경된 기존 시스템 기능을 수정할 수 있었습니다. 그러나 유일한 문제는 프로그램 변수를 통해 호출해야 한다는 것입니다.

따라서 이 방법을 수행하고 싶지 않다면 이 방법이 더 나은 선택이 될 것입니다.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn