如何禁用Console.WriteLine等输出

问题描述

项目引用了别人写的一个类库,里面很多Console.WriteLine,我这本身也是要用Console输入输出一些东西这样控制台里显示就混乱了,现在不知道该怎么才能教你用引用的类库里的控制台输出

解决方案

解决方案二:
让那个别人把console都去掉。
解决方案三:
你就不要Console了,你log吧……
解决方案四:
自定义一个TextWriter,对WriteLine方法的调用进行过滤,如果不是你需要的内容就不要输出,如果是就输出。然后用Console.SetOut方法替换默认的输出为你自定义的TextWriter,这样就可以了。
解决方案五:
这恐怕不行吧.
解决方案六:
引用楼主wangfan027的回复:

项目引用了别人写的一个类库,里面很多Console.WriteLine,我这本身也是要用Console输入输出一些东西这样控制台里显示就混乱了,现在不知道该怎么才能教你用引用的类库里的控制台输出

介个你只能问提供类库的人改了~
解决方案七:
是的。在类库工程中弄一堆的Console.WriteLine,可想而知这种类库也不是什么正规产品中的,可用可不用。而你使用它时,连源代码都找不到,那么就更加证明不应该用它了。
解决方案八:
引用3楼effun的回复:

自定义一个TextWriter,对WriteLine方法的调用进行过滤,如果不是你需要的内容就不要输出,如果是就输出。然后用Console.SetOut方法替换默认的输出为你自定义的TextWriter,这样就可以了。

WriteLine之类的(以及相关的十几种不同写法相同功能的)方法,都归于要调用WriteChar之类的方法,要“过滤”也必须在对单个字符处理时去过滤。所以很难去区分到单个字符到底是自己工程输出的还是人家工程输出的。
解决方案九:
把你的输入输出重定向到另一个控制台就是了。
解决方案十:
引用7楼sp1234的回复:

Quote: 引用3楼effun的回复:
自定义一个TextWriter,对WriteLine方法的调用进行过滤,如果不是你需要的内容就不要输出,如果是就输出。然后用Console.SetOut方法替换默认的输出为你自定义的TextWriter,这样就可以了。

WriteLine之类的(以及相关的十几种不同写法相同功能的)方法,都归于要调用WriteChar之类的方法,要“过滤”也必须在对单个字符处理时去过滤。所以很难去区分到单个字符到底是自己工程输出的还是人家工程输出的。

确实,我仔细看了一下TextWriter的说明,Write(Char)是最根本的方法,如果要从这个方法里去过滤的确很不容易。不过我觉得,假如对过滤的要求不是非常严格的话,通过适当重载WriteLine等方法还是可以做一个丑陋的实现,我考虑了两个方案:1、通过调用堆栈来判断是哪个程序集调用,对不希望的程序集直接忽略输出,不过这种方法在性能上可能会非常要命。2、对自己的输出做一些特别的标识,在检测到这些标识时输出,否则忽略输出。
解决方案十一:
又想到一个靠谱点的方法,不过调用会有些麻烦,参考下面的代码。classConsoleOut:TextWriter{privateConsoleOut(TextWriteroutput){_out=output;}privateTextWriter_out;publicoverrideEncodingEncoding{get{return_out.Encoding;}}publicoverridevoidWrite(charvalue){if(__outputEnabled)_out.Write(value);}privatestaticConsoleOut__instance;publicstaticvoidInstall(){if(__instance==null){__instance=newConsoleOut(Console.Out);Console.SetOut(__instance);}}privatestaticbool__outputEnabled;publicstaticboolOutputEnabled{get{return__outputEnabled;}set{__outputEnabled=value;}}}

//调用示范ConsoleOut.Install();Console.WriteLine("这行不会输出");ConsoleOut.OutputEnabled=true;Console.WriteLine("这行可以输出");ConsoleOut.OutputEnabled=false;Console.WriteLine("这行也不会输出");

解决方案十二:
ILSPY打开他另存为解决方案VS打开他//Console.WriteLine替换Console.WriteLineF5搞定

时间: 2024-09-13 20:53:33

如何禁用Console.WriteLine等输出的相关文章

console输出显示-怎么才能显示Eclipes中Console的全部输出

问题描述 怎么才能显示Eclipes中Console的全部输出 现在只显示最后输出的部分...前边的看不了啊怎么才能显示Eclipes中Console的全部输出.在哪里设置.我输出了很多的内容.用JAVA输入了一个XML里的内容,然后只讲最后几百行的输出了出来前边的没输出.请问怎么全部输出?能在哪设置? 解决方案 Window->Preferences->Run/Debug/Console->Console buffer size 解决方案二: console有一个limit line

Console.WriteLine()有那12种构造参数

问题描述 麻烦各位高手说详细点 解决方案 解决方案二: 解决方案三:引用1楼sandy945的回复: http://msdn.microsoft.com/zh-cn/library/system.console.writeline(VS.80).aspx 看帮助啊解决方案四:重载列表在你输入左括号的时候就会显示,你可以用"上""下"方向键来查看.解决方案五:你鼠标放在那,就可以显示出来定义.

请问console.log([]==![]);的输出结果,原理是什么?

问题描述 请问console.log([]==![]);的输出结果,原理是什么?求指点 解决方案 前面的回复写错了,又不能修改,为免误导观众,发个更正版:1. []单独用在==表达式中时,会隐含转型为""(空字符串) 2. 一个不是null或者undefined的对象(包括[])用在布尔表达式中,会被作为true处理.因此![]的结果是false. 所以[]==![]等价于 ""==false,而空字符串在布尔表达式中作为false处理.因此最终结果是true.==

Console.WriteLine(7.88 + 5.00 - 12.88); 结果为True还是False?

Console.WriteLine(7.88 + 5.00 == 12.88);结果是什么呢? 结果为False,是的哦,为什么会这样呢? 分析 用"=="来比较两个double应该相等的类型,返回真值完全是不确定的.计算机对浮点数的进行计算的原理是只保证必要精度内正确即可,例如:double a=0.9+0.2;那么只能保证小数点后1位这个精度是正确的,计算机计算这个加法的结果a的值可能是1.100000001,也可能是1.100000002也可能就是1.1,也就是说计算机计算后并不

如何输出字符串中转义字符?

问题描述 如果stringstr=@"nhello";Console.WriteLine(str);输出nhello如果stringstr="nhello";stringstrtemp=@str;Console.WriteLine(strtemp);输出hello问题是str如果作为参数传进来,如何输出str里的转义字符n???在线等,谢谢各位啦. 解决方案 解决方案二:stringstr="\nhello"stringstrtemp=@str;

C#读取XML文件——自定义类

C#本身也带有读取XML文件的类,但是许久未曾接触C#了,为了练练手,自己写了一个具有简单功能的类,实现了读取xml文件,查找元素,插入结点等功能.实现如下: XmlDoc类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleCSharp { class XmlDoc { internal static st

Visual C#2005快速入门之声明bool变量

visual|变量|快速入门 与现实世界不同,在编程的世界中,每一件事情要么黑,要么白:要么对,要么错:要么是真的,要么是假的.例如,假定你创建一个名为x的整数变量,把值99赋给x,然后问:"x中包含了值99吗?"答案显然是肯定的.如果你问:"x小于10吗?"答案显然是否定的.这些正是布尔(Boolean)表达式的例子.一个布尔表达式肯定求值为true或false.   注意 对于这些问题,并非所有编程语言都会做出同样的回答.例如,一个未赋值的变量有一个未定义的值,

C#简介- 类和对象

对象 类(class)是C#类型中最基础的类型.类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中.类提供了用于动态创建类实例的定义,也就是对象(object).类支持继承(inheritance)和多态(polymorphism),即派生类能够扩展和特殊化基类的机制. 使用类声明可以创建新的类.类声明以一个声明头开始,其组成方式如下:先是指定类的特性和修饰符,后跟类的名字,基类(如果有的话)的名字,以及被该类实现的接口名.声明头后面就是类体了,它由一组包含在大括号({

C#中using的三种用法

using 指令有两个用途: 允许在命名空间中使用类型,以便您不必限定在该命名空间中使用的类型. 为命名空间创建别名. using 关键字还用来创建 using 语句  定义一个范围,将在此范围之外释放一个或多个对象. 请参见 using 语句.http://www.yaosansi.com/blog/article.asp?id=669   using namespace;using alias = type|namespace; 参数 Alias 您希望用来表示命名空间或类型的用户定义符号.