C# 預處理程式中的巨集定義

Harshit Jindal 2023年10月12日
  1. C# 中使用靜態 using 宣告式
  2. 在 C# 靜態類中使用 Wrap 函式
C# 預處理程式中的巨集定義

C# 作為一種語言不支援巨集。沒有像 C 和 C++ 這樣的預處理程式。

但是,C# 具有通過在 C# 專案檔案中新增構建前 C/C++ 程式來模擬預處理程式功能和巨集的專案檔案。

這種方法可能會產生預期的結果,但非常不鼓勵在生產中使用此類技巧,並且有時會導致意外行為。

較新版本的 C# 允許我們模仿某些巨集,並且應該優先使用它們而不是使用 C/C++ 應用程式裝配 C# 專案檔案。在本教程中,我們將瞭解如何在 C# 中擁有類似功能的巨集。

C# 中使用靜態 using 宣告式

我們可以在靜態使用宣告的幫助下省略每次輸入類名。它們通過靜態宣告減少了 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# 庫一起使用,進行所有這些跨程式集呼叫。

在 C# 靜態類中使用 Wrap 函式

我們可以通過宣告一個公共靜態類並在其中包裝 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
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