zoukankan      html  css  js  c++  java
  • C# 中利用 Conditional 定义条件方法

      利用 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!
    */
    

      

  • 相关阅读:
    力扣 227 :基本计算器(II)
    力扣 224 :基本计算器(I)
    力扣 888:公平的糖果棒交换(哈希表法)
    力扣 1047 :删除字符串中的所有相邻重复项
    力扣 1423 :可获得的最大点数
    vue+spreadjs+后台Java实现与服务端交互的导入导出
    webpack 中 require.context() 多个模块的加载
    dwd_fact_coupon_use
    dwd_fact_cart_info
    dwd_fact_order_detail
  • 原文地址:https://www.cnblogs.com/lizhenlin/p/6542430.html
Copyright © 2011-2022 走看看