也说条件编译 #if #else #endif && Conditional Attribute

我初学.NET 时通常会这样写条件编译:

 

Code
/// <summary>
/// 不推荐的条件编译方法
/// </summary>
public void CheckData(object o)
{
#
if DEBUG
//Do Some
#endif
}

 

其实.net 框架提供了条件编译的良好方法,推荐写法:

 

Code
/// <summary>
/// 定义一个方法的条件编译,推荐方式
/// </summary>
[Conditional("Debug")]
public void CheckData()
{
//Todo check
}

 

如果是不是方法级别的条件编译,我们的写法又回归了:

 

Code
public void CheckData<T>(List<T> list)
{
try
{
//Do something
}
catch (Exception ex)
{
logger.InfoFormat(ex.Message);
#
if DEBUG
throw new AbnormalDataException(String.Format("新增记录异常{0}", ex.Message), ex);
#else
throw new AbnormalDataException("新增记录异常",ex);
#endif
}
}

 

备注:

1.标识符 Debug #DEBUG 区分大小写

2.善用Conditional ,拆分Simple Method

posted @ 2008-11-20 14:09  winzheng  阅读(707)  评论(0编辑  收藏  举报