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

本文详细介绍了C#中Conditional属性的使用方法,解释了如何利用此属性定义条件方法,以及在不同编译条件下方法调用的执行情况。文章还列举了Conditional属性的使用限制,并通过代码示例展示了其在实际编程中的应用。

参考:MSDN

 

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

 

条件方法要受到以下限制:

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

 

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

 1 /*MyConditional.cs*/
2
3 //#define DEBUG
4 using System;
5 using System.Diagnostics;
6 class Info
7 {
8 //[Conditional("DEBUG")]
9 public static void Trace(string strMessage)
10 {
11 Console.WriteLine(strMessage);
12 }
13
14 [Conditional("DEBUG")]
15 public static void TraceX(string strFormat,params object[] list)
16 {
17 Console.WriteLine(strFormat, list);
18 }
19 }
20
21 class TestConditional
22 {
23 public static void Main()
24 {
25 Info.Trace("Cool!");
26 Info.TraceX("{0} {1} {2}","C", "U", 2001);
27 }
28 }
29
30 /*
31 编译方式1:
32 csc /define:DEBUG /out:1.exe MyConditional.cs
33
34 运行结果1:
35 Cool!
36 C U 2001
37 */
38
39 /*
40 编译方式2:
41 csc /out:1.exe MyConditional.cs
42
43 运行结果2:
44 Cool!
45 */

 


转载于:https://www.cnblogs.com/cpsa3/archive/2012/02/06/2340693.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值