将流对象传递给流可以是控制台或文件的功能

时间:2010-09-10 15:50:46

标签: c# stream

我想编写一个接受stream参数的函数。理想情况下,我希望该参数是控制台(如果我想要输出到屏幕)或文件(如果我想保存输出)。

这样的事情:

void myFunc(<some stream object> strm)
{
   strm.Write("something");
}

如何声明并调用函数来获取我正在寻找的行为?

2 个答案:

答案 0 :(得分:4)

而不是Stream,请考虑使用TextWriter。这样,您可以使用StreamWriter写入文件,使用Console.Out写入控制台:

static void DoStuff(TextWriter output)
{
    output.WriteLine("doing stuff");
}

static void Main()
{
    DoStuff(Console.Out);

    using( var sw = new StreamWriter("file.txt") )
    {
        DoStuff(sw);
    }
}

答案 1 :(得分:1)

我完全赞同马克的答案:TextWriter几乎可以肯定

但是,如果您绝对来处理任意流,则可以使用Console.OpenStandardOutput()来获取到控制台的流。我会强烈建议你不要使用它,除非你真的必须这样做。

相关问题