我今天读到了这个Conditional
属性。根据 MSDN:
应用于
ConditionalAttribute
方法向编译器表明,除非定义了与之关联的条件编译符号,否则不应将对该方法的调用编译为 Microsoft 中间语言 (MSIL)ConditionalAttribute
。
好的。这很清楚。所以对方法的调用不会被编译。但是副作用呢?
[Conditional("UndefinedCondition")]
static void f1(int x) { Console.WriteLine(x); }
static int a = 0;
static void f2() { f1(++a); }
因此,当f2
被调用时,f1
应该删除对的调用。但是为什么也被++a
删除了?这对我来说没有任何意义!