C# 如何规范的写 DEBUG 输出
作者:mrr 发布时间:2023-04-27 03:12:37
经常在代码中,需要使用 DEBUG 来输出一些奇怪的东西来进行测试。但是输出的窗口只有一个,如果有一个逗比在不停输出,那么就会让输出窗口看不到自己的内容。
Task.Run(() =>
{
while (true)
{
Console.WriteLine("我是逗比");
}
});
Console.WriteLine("有用的信息");
于是逗比喜欢自己的测试代码,因为他需要不停看到输出窗口在说自己,但是正常的程序员是只看有用的东西,所以他就会拿出刀子准备杀掉逗比。那么逗比如何防止自己被杀,他这时就告诉程序员,注释掉代码
Task.Run(() =>
{
while (true)
{
//Console.WriteLine("我是逗比");
}
});
Console.WriteLine("有用的信息");
但是程序员注释了,也没有什么作用,因为逗比在很多个地方写了这样的代码
Task.Run(() =>
{
while (true)
{
//Console.WriteLine("我是逗比");
}
});
Console.WriteLine("有用的信息");
Task.Run(() =>
{
while (true)
{
Console.WriteLine("我是逗比 1");
}
});
终于程序员注释所有的代码,可以运行了,但是逗比拿到程序员的代码,发现没有输出了,这时他又不高兴了,于是逗比去掉了所有的注释,准备在上传代码的时候再把代码注释。但是不小心,有一个地方没有注释了,所以还是被程序员打了。
那么逗比需要如何防止被程序员打?下面我就来告诉一个方法,使用 #if
一般在代码会看到这样的写法
Task.Run(() =>
{
while (true)
{
# if DEBUG
Console.WriteLine("我是逗比");
# endif
}
});
但是这样的写法是不对的,因为 DEBUG 只有在所有开发者在测试都需要使用的代码才使用他。如果是自己使用的,一般都自己定义。那么如何定义?需要在文件的开始写下面的代码
# define DEBUG_取消注释显示林德熙调试
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using lindexi.framework.mvvm;
using lindexi.controls;
using lindexi.linq;
定义的格式是 DEBUG_取消注释 后面加上功能
现在的代码就可以修改为
Task.Run(() =>
{
while (true)
{
# if DEBUG_取消注释显示林德熙调试
Console.WriteLine("我是逗比");
# endif
}
});
于是所有的我自己使用的都使用这个方法,只需要注释掉我的定义就可以去掉所有我的代码。这样就不需要一个个去注释,而且一般这句代码在上传代码的时候就去掉。
但是这个方法有个缺点,在他的作用只能在一个文件,如果有多个文件都需要写自己的代码,那么还是需要在多个文件上添加这句话,如果在上传代码的时候不记得把所有的文件进行注释,那么还是会被打。
总结
以上所述是小编给大家介绍的C# 如何规范的写 DEBUG 输出问题,希望对大家有所帮助!
来源:https://lindexi.gitee.io/lindexi/post/C-%E5%A6%82%E4%BD%95%E5%86%99-DEBUG-%E8%BE%93%E5%87%BA.html?utm_source=tuicool&utm_medium=referral
猜你喜欢
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- java进行时间转换成unix timestamp的具体代码,供大家参考,具体内容如下import java.text.DateFormat
- 本实例使用用户和订单的例子做说明: 一个用户可以有多个订单, 一个订单只对应一个用户。(其中应用到注释)1.代码的结构2. 建表语
- WPF 如何实现简单放大镜框架使用.NET40;Visual Studio 2019;实现此功能需要用到 VisualBrush&
- 前言在一个 Web 请求中,参数我们无非就是放在地址栏或者请求体中,个别请求可能放在请求头中。放在地址栏中,我们可以通过如下方式获取参数:S
- 本文实例讲述了C#读取文本文件到listbox组件的方法。分享给大家供大家参考。具体实现方法如下:private void AddTxtTo
- 一、实现效果本篇文章实现了简单的图片轮播,初始化3张资源图片,初始化3秒更换一次图片背景,轮换播放。二、知识点Thread线程start()
- 如题,主要使用AsReadOnly这个方法就可以了List<int> a = new List<int> {1, 2
- 设计算法,计算两给定基因序列的相似程度。人类基因由4种核苷酸,分别用字母ACTG表示。要求编写一个程序,按以下规则比较两个基因序列并确定它们
- springboot整合tkmapper1.导入pom依赖1.1 导入springboot的parent依赖<parent> &
- 如何将Object类型转换为int类型Object object = null;try{ Integer.pars
- springboot使用mybatis一对多的关联查询由于刚开始写java不久,对sql语句的熟悉度还是不够熟练,虽然现在使用的mybati
- 一.背景本文主要介绍Java 8中时间的操作方法java.util.Date是用于表示一个日期和时间的对象(注意与java.sql.Date
- 一、前言 本学期学习了JAVA语言,在学期的结束,写一个有操作界面,与数据库关联的管理系统,用来巩固自己本学习所学的知识。 用到的知识:JA
- 目录无SpringMVC全局异常时的流程图SpringMVC全局异常流程图其实是一个ModelAndView对象配置文件applicatio
- 多线程的创建,方式一:继承于Thread类1.创建一个继承于Thread类的子类2.重写Thread类的run()--->将此线程执行
- 前言之前在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务
- 本文实例讲述了C#使用回溯法解决背包问题的方法。分享给大家供大家参考。具体如下:背包问题描述:给定一组物品,每种物品都有自己的重量和价格,在
- 二维码是越来越流行了,很多地方都有可能是使用到。如果是静态的二维码还是比较好处理的,通过在线工具就可以直接生成一张二维码图片,比如:草料二维
- 介绍上图就是循环依赖的三种情况,虽然方式不同,但是循环依赖的本质是一样的,就A的完整创建要依赖与B,B的完整创建要依赖于A,相互依赖导致没办