2013-09-21 131 views
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); 
} 

什麼是方法重載的好處?

+3

更多名字==更多記住。 –

+2

您正在使用'Console.WriteLine',它具有[許多重載](http://msdn.microsoft.com/en-us/library/system.console.writeline.aspx),但不是很高興沒有爲不同的類型使用'Console.WriteString','Console.WriteInt64','Console.WriteFloat'等等。 :) – keyboardP

+0

@HansPassant我更願意把它寫成'More names =>來記憶'。因爲「更多名字」與「更多記憶」不同。 – Cruncher

回答

1

你不需要需要,但是,它有助於保持程序的一致性。你不應該在你的方法名稱中明確聲明你可以向兩個人問好,你的代碼應該說明問題。

這應該是顯而易見

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

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

做什麼,而不必進行非常多餘的方法名。

0

大多數情況下的好處是純粹的語義。如果兩種方法做同樣的事情(但略有不同的參數),爲什麼命名他們不同?

如果您正在閱讀API,如果方法根據其過載進行分組,則閱讀起來會更容易。

0

我能想到的一個很好的例子是,當你有一個複雜的功能給用戶不同的執行相同功能的方法。當你想'猜測'用戶想要什麼時,你可以刪除參數。

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

    public void SomeMethod(int variable) 
    { 
     // Do something here 
    } 
} 
0

重載的方法改善了代碼的清晰度。在設計複雜的程序時,代碼更改和一些分支變得不必要。爲了消除複雜性並提高性能,添加了重載方法。

您可以從喬恩斯基特的書閱讀更多

C# Overload Method

而且還從提取C# in Depth

C# in Depth : Overloading

0

它使類的構造函數更容易使用,因爲它總是具有相同名稱。

相關問題