C# 中利用 Conditional 定义条件方法
来源:互联网 发布:js 屏蔽鼠标中键 编辑:程序博客网 时间:2024/06/15 12:57
原帖:http://blog.csdn.net/allenjy123/article/details/7235626
利用 Conditional 属性,程序员可以定义条件方法。Conditional 属性通过测试条件编译符号来确定适用的条件。当运行到一个条件方法调用时,是否执行该调用,要根据出现该调用时是否已定义了此符号来确定。如果定义了此符号,则执行该调用;否则省略该调用(包括对调用的参数的计算)。
条件方法要受到以下限制:
- 条件方法必须是类声明或结构声明中的方法。如果在接口声明中的方法上指定
Conditional
属性,将出现编译时错误。 - 条件方法必须具有
void
返回类型。 - 不能用
override
修饰符标记条件方法。但是,可以用virtual
修饰符标记条件方法。此类方法的重写方法隐含为有条件的方法,而且不能用Conditional
属性显式标记。 - 条件方法不能是接口方法的实现。否则将发生编译时错误。
- 如果条件方法用在“委托创建表达式”中,也会发生编译时错误
Ps.尽量使用Conditional属性代替#if和#endif
- /*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!
- */
0 0
- C# 中利用 Conditional 定义条件方法
- C# 中利用 Conditional 定义条件方法
- SPEC中定义条件macro(conditional macro)
- c# 条件编译 Conditional ("DEBUG")
- 改善C#程序的50种方法 条款4:使用Conditional特性代替#if条件编译
- Excel 中条件格式化单元格 conditional formatting
- 浅谈spring中@Conditional(条件注解)
- C#条件编译选项:Conditional(代替#if...#endif)
- C#条件编译选项:Conditional(代替#if...#endif)
- C#条件编译选项:Conditional(代替#if...#endif)
- Effective C# Item4:使用Conditional特性代替#if条件编译
- C#条件编译选项:Conditional(代替#if...#endif)
- C#中定义调用方法
- Reverse Conditional -- 反转条件
- Conditional Comments 条件注释
- Spring4 条件注解@Conditional
- @Conditional条件注解
- 在 C# 中定义常量的方法
- Java泛型 继承中类型变量的关系
- 转: 计算机的引导过程
- CMD 模块构建,从认识 Grunt 开始
- sqlite3-c-apis
- URL编码与两次encodeURI
- C# 中利用 Conditional 定义条件方法
- Oracle中REGEXP_SUBSTR函数
- NSDictionary全部API的学习。
- MySQL Workbench导出csv格式文件打开后发现数据乱码解决方法
- sqlite命令行工具
- POJ 3006 解题报告
- [uiscreen mainscreen].applicationFrame 和 bounds的区别
- uiview_animation
- Datatables之搜索