我浏览了一下文档,注意到Console.WriteLine()
方法有几个重载。特别是,我的好奇心和部分困惑与以下几点有关:
public static void WriteLine(string format, params object[] arg);
public static void WriteLine(string format, object arg0);
public static void WriteLine(string format, object arg0, object arg1);
public static void WriteLine(string format, object arg0, object arg1, object arg2);
public static void WriteLine(string format, object arg0, object arg1, object arg2, object arg3);
这似乎是多余的。在第一个重载之上的其他四个重载的需求是什么?第一种方法可以做其他方法可以做的所有事情。是否有性能问题,他们试图通过提供额外的重载来解决,这些重载最多处理四个参数(最后一个)?遍历最多包含四个参数的数组的开销是否足以满足这些重载的需要?
发布于 2014-03-07 14:02:05
重载是为了方便不存在params关键字的C++/CLI程序。
发布于 2014-03-08 18:50:37
我想你们都忘记了params是在C# 2.0中引入的。因此,当params关键字不存在时,.NET 1.1中也存在重载。
发布于 2014-03-07 13:54:20
这并不是真正的性能问题。然而,增加可用性是它背后的一个合理的原因。
下面的代码可以让你有一个小的洞察力。
public class TipCalculator {
private const double tipRate = 0.18;
public static int Main(string[] args) {
double billTotal;
if (args.Length == 0) {
Console.WriteLine("usage: TIPCALC total");
return 1;
}
else {
try {
billTotal = Double.Parse(args[0]);
}
catch(FormatException) {
Console.WriteLine("usage: TIPCALC total");
return 1;
}
double tip = billTotal * tipRate;
Console.WriteLine();
Console.WriteLine("Bill total:\t{0,8:c}", billTotal);
Console.WriteLine("Tip total/rate:\t{0,8:c} ({1:p1})", tip, tipRate);
Console.WriteLine(("").PadRight(24, '-'));
Console.WriteLine("Grand total:\t{0,8:c}", billTotal + tip);
return 0;
}
}
}
有关更多信息,请参阅链接:http://msdn.microsoft.com/en-us/library/aa324774(v=vs.71).aspx。
https://stackoverflow.com/questions/22242474
复制相似问题