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

  

转载于:https://www.cnblogs.com/lizhenlin/p/6542430.html

C# 中利用 Conditional 定义条件方法相关推荐

  1. python类定义中__init__()_转:python学习——类中为什么要定义__init__()方法

    学习Python的类,一直不太理解为什么一定要定义init()方法,现在简要谈一下自己的理解吧. 1.不用init()方法定义类 定义一个矩形的类,目的是求周长和面积. 1 classRectangl ...

  2. linux中利用shell脚本条件执行linux命令

    linux中利用shell脚本条件执行命令 在linux环境中,我们总会有一些命令需要经常用,例如经常跳转到某些目录下或者执行某些命令,输入一连串的命令是很烦的,此时我们可以预先写一些脚本然后根据我们 ...

  3. 四、Spring中使用@Conditional按照条件注册Bean

    以前其实是写过@Condtional注解的笔记的,这里附上链接: Spring中的@conditional注解 但已经忘记的差不多了,所以今天再重新学习下,可以互补着学习 @Contional:按照一 ...

  4. MDK中利用宏定义__DATE__和__TIME__设置产品的代码固件版本

    文章目录 前言 一.__DATE__和__TIME__是什么? 二.使用步骤 1.引入库 2.参考代码 总结 前言 STM32开发中,利用宏定义的__DATE__和__TIME__设置产品的代码固件版 ...

  5. Java 中利用Calendar类的方法判断当前年是闰年还是平年

    分析以下需求,并用代码实现要求:利用Calendar类的方法判断当前年是闰年还是平年提示:方式1闰年:二月有29天将日期设置为3月1号,然后倒退1天至2月底,求出2月底是多少天方式2闰年条件:如果当前 ...

  6. KDD2021 | 推荐系统中利用深度哈希方法学习类别特征表示

    本文分享一篇谷歌团队发表在KDD'21的推荐系统文章:不使用嵌入表的方式获得类别特征的表征用于推荐系统[1]. 本文结构组织如下: 背景 已有的类别特征嵌入方法 One-hot Full Embedd ...

  7. java sublist_java中利用List的subList方法实现对List分页(简单易学)

    /** *//** * List分页 * 实现:利用List的获取子List方法,实现对List的分页 * @author 显武 * @date 2010-1-8 16:27:31 * */ impo ...

  8. Oracle里date和sysdate,关于oracle中利用sysdate比较的方法

    在oracle中用来存储日期类型的数据叫做date 我们可以利用 SELECT SYSDATE FROM DUAL 即可调用oracle中本身自带的一个获取当前系统时间的一个函数 不过SYSDATE本 ...

  9. 在Excel中利用宏定义实现MD5加密和批量加密

    想试试excel表格的批量插入,在网上找了一些方法,结合方法自己总结了下! 分为四步     1.下载宏文件[md5宏]      下载宏地址:https://pan.baidu.com/s/13YG ...

最新文章

  1. leetcode-440 字典序的第K小数字
  2. Linux查看CPU和内存使用情况详解
  3. 收藏!一篇文章搞懂项目管理
  4. 字符串的最大最小表示法 模板
  5. Xcode没有pch文件
  6. 国内Linux shell,管理你的 shell 环境 | Linux 中国
  7. 彻彻底底了解回调函数
  8. P1603 斯诺登的密码-字符串加法的妙用
  9. JS获取Audio音频的实时时间
  10. mysql sql语句 查询文章表,评论表(根据评论表文章评论次数排序查询出文章count(),group,left join)
  11. Java整合ORC识别验证码
  12. PADS中常用无模命令快捷键
  13. chemdraw怎么连接两个结构_ChemDraw如何连接两个片段?
  14. 计算机视觉论文-2021-05-28
  15. c语言高级编程培训,C语言高级编程
  16. [ZROJ-955]折纸 Solution
  17. windows10 安装
  18. 【Book 133】Illuminate-Harness the Positive Power of negative Thinking
  19. 地图兴趣点搜索一(基本流程)
  20. python之正则表达式及RE模块

热门文章

  1. 从《在小吃店遇见凯恩斯》初识经济
  2. oracle 窗口函数 (keep)
  3. JS 数组 各项操作
  4. Mysql 允许所有IP访问
  5. Iphone NSMutableArray,NSMutableDictionary AND 动态添加按钮
  6. 批处理ping指定ip列表
  7. android JNI调用(Android Studio 3.0.1)(转)
  8. java的classpath
  9. aws spark_使用Spark构建AWS数据湖时的一些问题以及如何处理这些问题
  10. 1805. 字符串中不同整数的数目