如果我想在文件和控制台上输出内容,我应该在两个语句中分别做两件事,还是有更简洁的方法,例如,一个语句用于写入文件和控制台?< / p>
例如
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();
调用string.Format()
的参数很复杂且很长。
感谢。
答案 0 :(得分:5)
编写一个函数方法,同时执行这两个操作。将它放在具有文件流或其他任何内容的类中,并保留副本。
public void Write(string fmt, params object[] args) {
var str = String.Format(fmt, args);
_file.WriteLine(str);
Console.WriteLine(str);
}
如果您正在使用C#6,请为该方法指定一个字符串参数,并使用插值而不是String.Format()
个参数:
public void Write(string str) {
_file.WriteLine(str);
Console.WriteLine(str);
}
...
_log.Write($"My {vehicle} is full of {seaCreature}s, it is {damageDescription}");
我更喜欢插值以提高可读性(&#34;等等,什么是{0}
?&#34;)因为我记得params object[]
方法的东西在重载解析时会变得棘手。已经过了几年但如果有兴趣我可以挖掘细节。但想想看,任何东西都可以成为一个对象,你可以有一个或多个论点,有时它们都会流泪。