您的位置:首页 > 编程语言 > C#

C# 中利用 Conditional 定义条件方法

2015-06-09 11:27 267 查看
原帖:http://blog.csdn.net/allenjy123/article/details/7235626

利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。

条件方法要受到以下限制:
条件方法必须是类声明或结构声明中的方法。如果在接口声明中的方法上指定 
Conditional
 属性,将出现编译时错误。
条件方法必须具有 
void
 返回类型。
不能用 
override
 修饰符标记条件方法。但是,可以用 
virtual
 修饰符标记条件方法。此类方法的重写方法隐含为有条件的方法,而且不能用 
Conditional
 属性显式标记。
条件方法不能是接口方法的实现。否则将发生编译时错误。
如果条件方法用在“委托创建表达式”中,也会发生编译时错误

Ps.尽量使用Conditional属性代替#if和#endif

[csharp] view
plaincopy

/*MyConditional.cs*/  

  

//#define DEBUG  

using System;  

using System.Diagnostics;  

class Info  

{  

    //[Conditional("DEBUG")]  

    public static void Trace(string strMessage)  

    {  

        Console.WriteLine(strMessage);  

    }  

  

    [Conditional("DEBUG")]  

    public static void TraceX(string strFormat,params object[] list)  

    {  

        Console.WriteLine(strFormat, list);  

    }  

}  

  

class TestConditional  

{  

    public static void Main()  

    {  

        Info.Trace("Cool!");  

        Info.TraceX("{0} {1} {2}","C", "U", 2001);  

    }  

}  

  

/* 

编译方式1: 

csc /define:DEBUG /out:1.exe MyConditional.cs 

 

运行结果1: 

Cool! 

C U 2001 

*/  

  

/* 

编译方式2: 

csc /out:1.exe MyConditional.cs 

 

运行结果2: 

Cool! 

*/  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: