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