C# 方法调用的块控制台输出

C# 方法调用的块控制台输出,c#,multithreading,C#,Multithreading,我在做类似的事情 interface ICalculable { public int Calculate(int input); } BigMethod(ICalculable calculable) { Console.Write("Sequence:"); for (int i = 0; i < 3; i++) { int result = calculable.Calculate(i); Console.Write(

我在做类似的事情

interface ICalculable
{
    public int Calculate(int input);
}

BigMethod(ICalculable calculable)
{
    Console.Write("Sequence:");
    for (int i = 0; i < 3; i++)
    {
        int result = calculable.Calculate(i);
        Console.Write($" {i}:{result}");
    }
}
控制台上看到的输出应该是

Sequence: 0:0 1:0 2:0
BigMethod
应该能够以某种方式使其对
Calculate
的调用静音

有办法吗


我已经考虑过使用
StringBuilder
,但我希望
BigMethod
的输出可以流化。

您可以使用,并且

输出

Hello there

然而,这似乎有点可疑/XY,如果您正在线程化,则容易出现异常奇怪的结果。

请稍等,那么您想用
控制台做什么?所以你永远不想让它显示?@TheGeneral我永远不想让它显示,
IRunnable#Run
中的某些内容不应该写入控制台。你想要的是
async
或后台处理之类的内容,但是你声明BigMethod的输出不应该被中断?如果你不想让它显示为什么你想让它成为参数?尝试重定向流是的,我决定什么都不做,信任用户。不管怎样,如果事情出了问题,他们的问题就来了
public static void Main()
{
   Console.Write("Hello ");

   // current output
   var current = Console.Out;

   // change the output to somewhere else
   Console.SetOut(new StreamWriter(Stream.Null));

   Run();

   // revert back
   Console.SetOut(current);

   Console.WriteLine("there");
}

private static void Run()
{
   Console.Write("Doctor, please keep touching me ");
}
Hello there