C# 如何写 DEBUG 输出

本文来告诉大家一个规范,如何去写 DEBUG 的输出。

经常在代码中,需要使用 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
                    }
                });

于是所有的我自己使用的都使用这个方法,只需要注释掉我的定义就可以去掉所有我的代码。这样就不需要一个个去注释,而且一般这句代码在上传代码的时候就去掉。

但是这个方法有个缺点,在他的作用只能在一个文件,如果有多个文件都需要写自己的代码,那么还是需要在多个文件上添加这句话,如果在上传代码的时候不记得把所有的文件进行注释,那么还是会被打。

如果大家有好的方法,请告诉我。


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王磊的博客

ASP.NET 缓存 Cache

ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通过 HTTP 请求存储和检索任意对象. 缓存的生存期与应用程序的生存期相同,也就是说,当应用程序重...

46750
来自专栏丑胖侠

Zookeeper客户端API之创建会话(六)

Zookeeper对外提供了一套Java的客户端API。本篇博客主要讲一下创建会话。 创建项目 首选,创建一个基于maven管理的简单java工程。在pom文件...

21790
来自专栏.net core新时代

分布式中使用Redis实现Session共享(二)

  上一篇介绍了一些redis的安装及使用步骤,本篇开始将介绍redis的实际应用场景,先从最常见的session开始,刚好也重新学习一遍session的实现原...

33660
来自专栏c#开发者

如何给DataGrid添加自动增长列

如何给DataGrid添加自动增长列 我想我们都知道在数据库中如何添加自增长列,我们可以将这个自增长列绑定到DataGrid上使得用户方便的知道现在是第几行,今...

450100
来自专栏技术记录

RabbitMQ教程(二) ——linux下安装rabbitmq

22440
来自专栏菩提树下的杨过

img标签的src=""会引起的Page_Load多次执行

今天看见园子里有人因img的src为空导致session丢失,详情见http://www.cnblogs.com/kyneblog/archive/2009/0...

234100
来自专栏GreenLeaves

WCF系列教程之WCF客户端调用服务

1、创建WCF客户端应用程序需要执行下列步骤 (1)、获取服务终结点的服务协定、绑定以及地址信息 (2)、使用该信息创建WCF客户端 (3)、调用操作 (4)、...

24790
来自专栏跟着阿笨一起玩NET

无法将类型“System.Collections.Generic.IEnumerable<EmailSystem.Model.TemplateInfo>”隐式转换为“System.Collection

36510
来自专栏跟着阿笨一起玩NET

C#.Net前台线程与后台线程的区别

 if (!this.IsDisposed ) 也是可以的。判断当前窗体是否已经释放。(备注:释放的窗体是不能操作界面UI元素的。)

36710
来自专栏大内老A

如何实现对上下文(Context)数据的统一管理 [提供源代码下载]

在应用开发中,我们经常需要设置一些上下文(Context)信息,这些上下文信息一般基于当前的会话(Session),比如当前登录用户的个人信息;或者基于当前方法...

54960

扫码关注云+社区

领取腾讯云代金券