是否有一种简洁的方法将相同的字符串输出到文件和控制台?

Tim*_*Tim -1 c#

如果我想向文件和控制台输出内容,我应该在两个语句中分别做两件事,还是有更简洁的方法,例如,一个语句写入文件和控制台?

例如

System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt");
...
file.WriteLine(string.Format(...) + string.Format(...));
Console.WriteLine(string.Format(...) + string.Format(...));
...
file.WriteLine(string.Format(...) + string.Format(...));
Console.WriteLine(string.Format(...) + string.Format(...));
...
file.WriteLine(string.Format(...) + string.Format(...));
Console.WriteLine(string.Format(...) + string.Format(...));
...
file.WriteLine(string.Format(...) + string.Format(...));
Console.WriteLine(string.Format(...) + string.Format(...));
...
file.Close();
Run Code Online (Sandbox Code Playgroud)

调用的参数string.Format()是复杂而漫长的.

谢谢.

15e*_*153 5

编写一个兼具两者功能的函数方法.把它放在一个有文件流或其他类的类中,并保留一个副本.

public void Write(string fmt, params object[] args) {
    var str = String.Format(fmt, args);
    _file.WriteLine(str);
    Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是C#6,请为该方法指定一个字符串参数,并使用插值而不是String.Format()参数:

public void Write(string str) {
    _file.WriteLine(str);
    Console.WriteLine(str);
}
Run Code Online (Sandbox Code Playgroud)

...

_log.Write($"My {vehicle} is full of {seaCreature}s, it is {damageDescription}");
Run Code Online (Sandbox Code Playgroud)

我更喜欢插值的可读性("等等,又是什么{0}?")因为我记得params object[]方法的东西可能会因重载决议而变得棘手.已经过了几年但如果有任何兴趣我可以挖掘细节.但想想看,任何东西都可以成为一个对象,你可以有一个或多个论点,有时它们都会流泪.