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操作等,最后就是现在这个事务特性. ...
随机推荐
- JavaScript常用事件参考
onabort 图像加载被中断 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标点击某个对象 ondblclick 鼠标双击某个对象 onerror 当加载文档 ...
- eclipse中ctrl+K失效
从昨天开始eclipse中Ctrl+d和Ctrl+K就失效了,简直无法忍受 解决方案: Window --> preferences --> General --> keys
- 【转】sql递归查询问题
原文链接地址http://www.cnblogs.com/sweting/archive/2009/06/08/1498483.html 在工作中遇到一个问题,是需要sql递归查询的.不懂,于是到cs ...
- 状态 ajax
//html部分 <a href="#" data-status="{$vo.state}" data-urid="{$vo.id}" ...
- ES版本控制
版本控制 ElasticSearch采用了乐观锁来保证数据的一致性,也就是说,当用户对document进行操作时,并不需要对该doucument作加锁和解锁的操作,只需要指定要操作的版本即可.当版本号 ...
- [zjoi2010]cheese
题目: 贪吃的老鼠(cheese.c/cpp/pas/in/out) 时限:每个测试点10秒 [问题描述] 奶酪店里最近出现了m只老鼠!它们的目标就是把生产出来的所有奶酪都吃掉.奶酪店中一天会生产n块 ...
- delphi编写与调用DLL(delphi7下测试通过)
http://blog.sina.com.cn/s/blog_4dbbf76f01000anz.html delphi编写DLL 下面在delphi中编写一个简单的dll,在该dll中只有一个max函 ...
- Android-WebView加载网页(new WebView(this)方式)
之前的博客,都是 findViewById(R.id.webview);,来得到WebView, 此博客使用 new WebView(this)方式; AndroidManifest.xml中配置网络 ...
- 第7章 "敏捷+"项目管理
7.1 导入敏捷项目管理的步骤 1.导入敏捷的步骤 (1).培训 (2).教练与引导 (3).内化 2.敏捷混合型模式 7.2 项目启动与敏捷合同 1.敏捷项目启动 2.敏捷签约模式 在传统项目管 ...
- python--求参赛两队所有可能的比赛组合情况
朋友遇到一个面试题,让我帮忙实现,题目如下: 红队有A1,B1,C1三名队员,蓝队有A2,B2,C2三名队员,每轮比赛各队出一名队员参加,一名队员只能参加一次比赛,假设A1不会和B2打,B1不会和B2 ...