首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Console.WriteLine()和需要这么多参数重载?

Console.WriteLine()和需要这么多参数重载?
EN

Stack Overflow用户
提问于 2014-03-07 13:44:05
回答 3查看 6.5K关注 0票数 87

我浏览了一下文档,注意到Console.WriteLine()方法有几个重载。特别是,我的好奇心和部分困惑与以下几点有关:

代码语言:javascript
复制
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);

这似乎是多余的。在第一个重载之上的其他四个重载的需求是什么?第一种方法可以做其他方法可以做的所有事情。是否有性能问题,他们试图通过提供额外的重载来解决,这些重载最多处理四个参数(最后一个)?遍历最多包含四个参数的数组的开销是否足以满足这些重载的需要?

EN

回答 3

Stack Overflow用户

发布于 2014-03-07 14:02:05

重载是为了方便不存在params关键字的C++/CLI程序。

票数 38
EN

Stack Overflow用户

发布于 2014-03-08 18:50:37

我想你们都忘记了params是在C# 2.0中引入的。因此,当params关键字不存在时,.NET 1.1中也存在重载。

票数 4
EN

Stack Overflow用户

发布于 2014-03-07 13:54:20

这并不是真正的性能问题。然而,增加可用性是它背后的一个合理的原因。

下面的代码可以让你有一个小的洞察力。

代码语言:javascript
复制
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

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22242474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档