C# 中利用 Conditional 定义条件方法
2015-06-09 11:27
267 查看
原帖:http://blog.csdn.net/allenjy123/article/details/7235626
利用 Conditional 属性,程序员可以定义条件方法。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!
*/
利用 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!
*/
相关文章推荐
- C#读文件操作
- C#和.net之间的关系
- C#实现一个简单的 Restful Service
- c#调用Restful API
- C#基础--之数据类型
- C#中的显式和隐式接口实现
- c# 操作excel(1)
- C#高级编程第六天----枚举
- C# List 去重
- C#中字典的使用
- C# List<>与Array性能比较
- C# int与string转化
- Visual C#每一次新版本的变化
- 使用属性(C# 编程指南)
- 使用C#调用mat
- 设计模式之二(decorator pattern)
- C# 继承实现父类方法、重写、重载
- C# 中实现单例模式
- C#:根据银行卡卡号判断银行名称
- C#超级实用的一种类型—匿名类型