C# Makro-Definitionen im Präprozessor

Harshit Jindal 12 Oktober 2023
  1. Verwendung von das Static using Declarative in C#
  2. Verwendung von die Wrap-Funktion in die statische C#-Klasse
C# Makro-Definitionen im Präprozessor

C# als Sprache unterstützt keine Makros. Es gibt keine Präprozessoren wie C und C++.

C# verfügt jedoch über Projektdateien, um die Präprozessorfunktionalität und Makros nachzuahmen, indem vorab erstellte C/C++-Programme in C#-Projektdateien hinzugefügt werden.

Diese Methode kann die gewünschten Ergebnisse liefern, aber von der Verwendung solcher Tricks in der Produktion wird dringend abgeraten und kann manchmal zu unerwartetem Verhalten führen.

Die neueren Versionen von C# ermöglichen es uns, bestimmte Makros nachzuahmen, und ihre Verwendung sollte dem Rigging von C#-Projektdateien mit C/C++-Anwendungen vorgezogen werden. In diesem Tutorial werden wir sehen, wie wir Makros wie Funktionen in C# haben können.

Verwendung von das Static using Declarative in C#

Wir können das Eintippen des Klassennamens jedes Mal mit Hilfe von static unter Verwendung von declarative weglassen. Sie reduzieren die ständige Wiederverwendung von Namespace und class Name durch statische Deklaration.

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

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

    return 0;
  }
}

Ausgabe:

C# macro!!

Im obigen Beispiel reduziert die statische Deklaration die ständige Wiederverwendung der SystemConsole mit allen konsolenbezogenen Befehlen. Bereitstellung eines coolen Makros, mit dem wir viel weniger Code schreiben können.

Wir können dies mit jeder C#-Bibliothek verwenden und all diese Cross-Assembly-Aufrufe durchführen.

Verwendung von die Wrap-Funktion in die statische C#-Klasse

Wir können Makros verwenden, indem wir eine öffentliche statische Klasse deklarieren und C#-Funktionalitäten darin verpacken. Die statische Initialisierung erfolgt vor dem Rest des Codes und hilft dabei, den Vorverarbeitungsaspekt von Makros nachzuahmen.

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;
  }
}

Ausgabe

C# macros!! 1st method

Im obigen Beispiel konnten wir die vorhandene Systemfunktion ändern, die in gewünschte Makros umbenannt wurde. Aber der einzige Haken ist, dass wir sie über die Programmvariable aufrufen müssen.

Wenn Sie diese Methode also nicht durchführen möchten, ist eine davon die bessere Wahl.

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