Conditional
今日、属性について読みました。MSDNによると:
メソッドへの適用は、関連付けられている条件付きコンパイル シンボルが定義され
ConditionalAttribute
ていない限り、メソッドへの呼び出しを Microsoft Intermediate Language (MSIL) にコンパイルしてはならないことをコンパイラに示します。ConditionalAttribute
わかった。それは明らかです。したがって、メソッドの呼び出しはコンパイルされません。しかし、副作用はどうですか?
[Conditional("UndefinedCondition")]
static void f1(int x) { Console.WriteLine(x); }
static int a = 0;
static void f2() { f1(++a); }
したがって、f2
が呼び出されたときは、 への呼び出しをf1
削除する必要があります。しかし、なぜ++a
同様に削除されるのですか?これは私には意味がありません!