说明:根据预处理标识符执行方法。Conditional 特性是 ConditionalAttribute 的别名,可应用于方法或属性类。相对于#if和#endif,更灵活更简洁和不易出错。
例如:
#define CONDITIONA using System; using System.Collections.Generic; using System.Diagnostics; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Test1(); Test2(); Console.ReadKey(); } [Conditional("CONDITIONA")] public static void Test1() { Console.WriteLine("Test1"); } public static void Test2() { Console.WriteLine("Test2"); } } }
这时Test1和Test2都将被执行,如果注释掉#define CONDITIONA,Test1将不会被执行。
也可以同时定义多个Conditional特性,这时多个特性之间的关系为或:
class Program { static void Main(string[] args) { Test1(); Test2(); Console.ReadKey(); } [Conditional("CONDITIONA"), Conditional("CONDITIONB")] public static void Test1() { Console.WriteLine("Test1"); } public static void Test2() { Console.WriteLine("Test2"); } }
如果要获得逻辑与效果,需要将所需执行代码全部放到Test2中执行:
class Program { static void Main(string[] args) { Test1(); Console.ReadKey(); } [Conditional("CONDITIONA")] public static void Test1() { Test2(); } [Conditional("CONDITIONB")] public static void Test2() { Console.WriteLine("Test1"); Console.WriteLine("Test2"); } }