なぜマクロが言語に含まれていなかったのか理解しています。彼らは容易に虐待されることがあります。しかし、私はいつも彼らが望ましいように見える状況に直面します。つい最近私は、画像ファイルをログに記録する方法を書いていた:Cでマクロをエミュレートする適切な方法は何ですか?
public void LogImage(Bitmap image, string name)
{
image.Save(LogRootDirectory + name + ".bmp");
}
はその後、私はそれが巧妙な、より良い私がログインしていた画像に関する情報を提供することがNameOf()機能を利用することを考えました。私のコードでのいくつかの場所では、私はこれに非常に似てラインがあります。
ImageLogger?.LogImage(processedImage, nameof(processedImage));
私を気に何をこれの反復であり、私はずっとこれに似プリプロセッサコマンドを好む:
#define LOGIMAGE(img) ImageLogger?.LogImage(img, nameof(img));
上のマクロの動作をエミュレートしてコードを効率化する方法はありますか?
注:This質問は、プロセッサごとの定義がC#に存在するかどうかを質問するという点で異なります。私は彼らがしないことを私が知っていることを最初から明確にした主張。私の質問は、私が代わりに使うかもしれない技術に関連しています。私が信じているのは、マークされた答えで私に与えられたものです。
プリプロセッサの[C#マクロ定義]の複製があります。(http://stackoverflow.com/questions/709463/c-sharp-macro-definitions-in-preprocessor) – phuzi
C#はマクロをサポートしていません。 Visual Studioのスニペット – phuzi
は上記の場合、単にLogImage(imager、nameof(image))と呼ばれるオーバーロードされたメソッドvoid LogImage(Bitmap image)を提供できませんか? –