C# 預處理程式中的巨集定義
C# 作為一種語言不支援巨集。沒有像 C 和 C++ 這樣的預處理程式。
但是,C# 具有通過在 C# 專案檔案中新增構建前 C/C++ 程式來模擬預處理程式功能和巨集的專案檔案。
這種方法可能會產生預期的結果,但非常不鼓勵在生產中使用此類技巧,並且有時會導致意外行為。
較新版本的 C# 允許我們模仿某些巨集,並且應該優先使用它們而不是使用 C/C++ 應用程式裝配 C# 專案檔案。在本教程中,我們將瞭解如何在 C# 中擁有類似功能的巨集。
在 C#
中使用靜態 using
宣告式
我們可以在靜態使用宣告的幫助下省略每次輸入類名。它們通過靜態宣告減少了 Namespace
和 class 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 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