zoukankan      html  css  js  c++  java
  • Effective C# 学习笔记(四)使用Conditional Attributes 替代 #if

    用法

    [Conditional("DEBUG"),

    Conditional("TRACE")]

    private void CheckState()

    {

    // Grab the name of the calling routine:

    string methodName =

    new StackTrace().GetFrame(1).GetMethod().Name;

    Trace.WriteLine("Entering CheckState for Person:");

    Trace.Write("\tcalled by ");

    Trace.WriteLine(methodName);

    Debug.Assert(lastName != null,

    methodName,

    "Last Name cannot be null");

    Debug.Assert(lastName.Length > 0,

    methodName,

    "Last Name cannot be blank");

    Debug.Assert(firstName != null,

    methodName,

    "First Name cannot be null");

    Debug.Assert(firstName.Length > 0,

    methodName,

    "First Name cannot be blank");

    Trace.WriteLine("Exiting CheckState for Person");

     

    }

    private void CheckStateBad()

    {

    // The Old way:

    #if BOTH

    Trace.WriteLine("Entering CheckState for Person");

    // Grab the name of the calling routine:

    string methodName =

    new StackTrace().GetFrame(1).GetMethod().Name;

    Debug.Assert(lastName != null,

    methodName,

    "Last Name cannot be null");

    Debug.Assert(lastName.Length > 0,

    methodName,

    "Last Name cannot be blank");

     

    Debug.Assert(firstName != null,

    methodName,

    "First Name cannot be null");

    Debug.Assert(firstName.Length > 0,

    methodName,

    "First Name cannot be blank");

    Trace.WriteLine("Exiting CheckState for Person");

    #endif

    }

     

    定义组合变量

    #if ( VAR1 && VAR2 )

    #define BOTH

    #endif

  • 相关阅读:
    什么是架构
    jenkins权限插件配置
    解决Error response from daemon: oci runtime error: container_linux.go:247: starting container process
    解决“/tmp/crontab bad minute”问题
    yml链接mysql路径serverTimezone=UTC的那些坑
    java请求头导致特殊字符为空问题
    使用ssh连接WSL
    系统设计与任务分配
    需求规格说明书
    选题报告
  • 原文地址:https://www.cnblogs.com/haokaibo/p/2096529.html
Copyright © 2011-2022 走看看