0

当然可以通过创建另一个具有不同名称的方法来完成相同的操作吗?

public void SayHello(string name)
{
  Console.WriteLine("Hello " + name);
}

public void SayHello(string name, string name2)
{
  Console.WriteLine("Hello  + name + "," + name2);
}

是相同的

public void SayHelloToTwoPeople(string name1, string name2)
{
  Console.WriteLine("Hello  + name + "," + name2);
}

方法重载有什么好处?

4

5 回答 5

1

但是,您不需要这样做它有助于使您的程序保持一致。您不需要在方法名称中明确声明您可以向两个人问好,您的代码应该自己说话。

应该很明显什么

public void SayHello(string person) {
    Console.WriteLine("Hello, " + person);
}

public void SayHello(String person1, string person2) {
    Console.WriteLine("Hello, " + person1 + " and, " + person2);
}

不必制作非常多余的方法名称。

于 2013-09-21T20:32:51.373 回答
0

大多数情况下的好处是纯粹的语义。如果两种方法做同样的事情(但参数略有不同),为什么要给它们起不同的名字呢?

如果您正在阅读 API,如果方法根据其重载进行分组,则阅读起来会容易得多。

于 2013-09-21T20:35:32.703 回答
0

我能想到的一个很好的例子是,当您有一个复杂的功能时,它为用户提供了执行相同功能的不同方式。当您想“猜测”用户想要什么时,您可以删除参数。

class ImportantClass
{
    public void SomeMethod()
    {
        SomeMethod(1); // Some default value
    }

    public void SomeMethod(int variable)
    {
        // Do something here
    }
}
于 2013-09-21T20:36:53.753 回答
0

重载的方法提高了代码的清晰度。在设计复杂的程序时,代码更改和一些分支变得不必要。添加了重载方法以消除复杂性并提高性能。

你可以阅读更多

C# 重载方法

还有来自 Jon Skeet 书中的摘录C# in Depth

C# 深入浅出:重载

于 2013-09-21T21:43:48.607 回答
0

它使类构造函数更易于使用,因为它始终具有相同的名称。

于 2013-09-21T23:45:26.810 回答