如果我想向文件和控制台输出内容,我应该在两个语句中分别做两件事,还是有更简洁的方法,例如,一个语句写入文件和控制台?
例如
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()是复杂而漫长的.
谢谢.
编写一个兼具两者功能的函数方法.把它放在一个有文件流或其他类的类中,并保留一个副本.
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[]方法的东西可能会因重载决议而变得棘手.已经过了几年但如果有任何兴趣我可以挖掘细节.但想想看,任何东西都可以成为一个对象,你可以有一个或多个论点,有时它们都会流泪.