Conditional特性用法
说明:根据预处理标识符执行方法。Conditional 特性是 ConditionalAttribute 的别名,可应用于方法或属性类。相对于#if和#endif,更灵活更简洁和不易出错。
例如:
#define CONDITIONA using System;
using System.Collections.Generic;
using System.Diagnostics; namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Test1();
Test2();
Console.ReadKey();
} [Conditional("CONDITIONA")]
public static void Test1()
{
Console.WriteLine("Test1");
} public static void Test2()
{
Console.WriteLine("Test2");
}
}
}
这时Test1和Test2都将被执行,如果注释掉#define CONDITIONA,Test1将不会被执行。
也可以同时定义多个Conditional特性,这时多个特性之间的关系为或:
class Program
{
static void Main(string[] args)
{
Test1();
Test2();
Console.ReadKey();
} [Conditional("CONDITIONA"), Conditional("CONDITIONB")]
public static void Test1()
{
Console.WriteLine("Test1");
} public static void Test2()
{
Console.WriteLine("Test2");
}
}
如果要获得逻辑与效果,需要将所需执行代码全部放到Test2中执行:
class Program
{
static void Main(string[] args)
{
Test1();
Console.ReadKey();
} [Conditional("CONDITIONA")]
public static void Test1()
{
Test2();
}
[Conditional("CONDITIONB")]
public static void Test2()
{
Console.WriteLine("Test1");
Console.WriteLine("Test2");
}
}
Conditional特性用法的更多相关文章
- 使用C#的Conditional特性与Unity编辑器宏命令做条件编译
概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Uni ...
- C# 使用Conditional特性而不是#if条件编译
概述 #if/#endif 语句常用来基于同一份源码生成不同的编译结果,其中最常见的就是debug版和release版.但是这些工具在实际应用中并不是非常友好,因为它们容易被滥用,其代码页进而难以理解 ...
- [转]C# 使用Conditional特性而不是#if条件编译
转自: http://www.cnblogs.com/xibei666/p/5495561.html 概述 #if/#endif 语句常用来基于同一份源码生成不同的编译结果,其中最常见的就是debug ...
- 《C#高效编程》读书笔记04-使用Conditional特性而不是#if条件编译
#if/#endif语句常用来基于同一份源代码生成不同的编译结果,其中最常见的就是debug版和release版.但是这在实际应用中并不是非常友好,因为它们容易被滥用,其代码也难以理解或调试. C#为 ...
- SpringBoot系列之@Conditional注解用法简介
SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...
- C# Conditional特性避免 预处理命令泛滥使用
//#define CONDITION1 #define CONDITION2 using System; using System.Diagnostics; class Test { static ...
- h5 新增特性用法---持续更新
1.dataset <div class="box" data-title1="自定义属性" data-age="18" data-m ...
- Conditional - 编译屏蔽特性
public class Test : MonoBehaviour { void Start() { Func(); } [System.Diagnostics.Conditional("U ...
- 把事务封装成类似Serializable用法的特性
把事务封装成类似Serializable用法的特性 最近几天上班没事可做就想着整理常用的类库方法,验证.消息.分页.模版引擎.数据库操作.ini操作.文本操作.xml操作等,最后就是现在这个事务特性. ...
随机推荐
- 第71讲:Scala界面Panel、Layout实战详解
今天学习了王家林老师scala讲座的第71讲,scala界面编程panel实战.让我们一起来看一下. 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark 关注微信账号,获取更多关于王家林老师的 ...
- TBB的学习
1. TBB简介 TBB ( Thread Building Blocks, 线程构建模块) 是Intel公司开发的并行编程开发的工具.它支持Windows,OS X, Linux平台,支持的编译器有 ...
- struts2马士兵笔记
Struts2 学习笔记 目录 01 Struts2-Action 一. Struts作用: 二. 搭建Struts2的运行环境: 三. Namespa ...
- python_列表、元组、字典、集合对比
列表.元组.字典.集合 列表.元组.字典.集合对比 比较项 列表 元组 字典 集合 类型名称 list tuple dict set 定界符 [] () {} {} 是否可变 是 否 是 是 是否有序 ...
- 分频器的verilog设计
笔者最近由于实验室老师的任务安排重新又看了一下分频器的verilog实现,现总结如下,待以后查看之用(重点是查看计数器计到哪个值clk_out进行状态翻转) 1.偶数分频占空比为50% 其实质还是一个 ...
- KNIME + Python = 数据分析+报表全流程
Python 数据分析环境 数据分析领域有很多可选方案,例如SPSS傻瓜式分析工具,SAS专业性商业分析工具,R和python这类需要代码编程类的工具.个人选择是python这类,包括pandas,n ...
- .NET MVC 学习笔记(六)— 数据导入
.NET MVC 学习笔记(六)—— 数据导入 在程序使用过程中,有时候需要新增大量数据,这样一条条数据去Add明显不是很友好,这时候最好就是有一个导入功能,导入所需要的数据,下面我们就一起来看一下导 ...
- How do I convert an IIR filter into a FIR filter in digital signal processing?
Maybe you were asking if there is some kind of design tool allowing to convert an IIR filter into an ...
- Spring Cloud实践之服务注册与发现Eureka
一.简述: 服务提供者producer与服务消费者consumer都注册到eureka server,然后服务consumer在其应用内直接调用producer的服务名来调用服务,而不是像之前一样调用 ...
- centos 安装nginx笔记
添加nginx 存储库 yum install epel-release 安装 yum install nginx 启动 systemctl start nginx