该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明! 陈希章原文地址:http://www.cnblogs.com/chenxizhang/archive/2009/03/20/1417333.html原文标题:Conditional 预编译器指令 原文发表:2009/3/20 1:26:00 |
这个指令有时候也称为条件编译。以前我们都是通过#if….#else … #endif这样的语句结构,总的来说比较繁琐。现在可以直接在被调用方法之上标记Conditional。这样,调用方的代码是不变的,编译的时候自动决定是否要编译调用语句。请看下面的例子
http://msdn.microsoft.com/zh-cn/library/4xssyw96.aspx
#define TRACE_ON using System; using System.Diagnostics; public class Trace { [Conditional("TRACE_ON")] public static void Msg(string msg) { Console.WriteLine(msg); } } public class ProgramClass { static void Main() { Trace.Msg("Now in Main..."); Console.WriteLine("Done."); } }
关于这个Attribute的详细资料如下
http://msdn.microsoft.com/zh-cn/library/system.diagnostics.conditionalattribute.aspx
重点:它可用于方法和类(在.NET 2.0之前,它只可以用于方法),但是类型必须是派生自Attribute的。
Conditional 属性还可被应用于属性类定义。在本例中,仅当定义了 DEBUG 时,自定义属性 Documentation 才向元数据添加信息。
C#
[Conditional("DEBUG")] public class Documentation : System.Attribute { string text; public Documentation(string text) { this.text = text; } } class SampleClass { // This attribute will only be included if DEBUG is defined. [Documentation("This method displays an integer.")] static void DoWork(int i) { System.Console.WriteLine(i.ToString()); } }
作者:陈希章 出处:http://blog.youkuaiyun.com/chen_xizhang 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |