利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。
条件方法要受到以下限制:
Conditional
属性,将出现编译时错误。void
返回类型。override
修饰符标记条件方法。但是,可以用 virtual
修饰符标记条件方法。此类方法的重写方法隐含为有条件的方法,而且不能用 Conditional
属性显式标记。如果条件方法用在“委托创建表达式”中,也会发生编译时错误
Ps.尽量使用Conditional属性代替#if和#endif
#define hello //这里就是定义了一个编译符号,当下面Conditional会检测是否存在这个hello编译符号时会 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using System.Diagnostics; namespace reflection { public class Trace { [Conditional("hello")] //定义了Conditional public static void ShowMessage(string msg) { Console.WriteLine(" [Trace - " + msg); } } class Program { static void Main(string[] args) { Trace.ShowMessage("Starting"); Console.WriteLine("运行中"); Trace.ShowMessage("Ending"); Console.ReadKey(); } } }