爲什麼我不能執行以下操作?具有相同名稱和不同退貨類型的會員的接口
public interface ICommunication
{
int Send(Dictionary<string, string> d);
int Send(byte[] b);
Dictionary<string, string> Receive();
byte[] Receive(); // Error
}
的Receive()
的signarure是不同的,但這些參數是相同的。爲什麼編譯器會查看參數而不是成員簽名?
ICommunication'已經用 相同的參數類型定義了一個名爲'Receive'的成員。
我怎麼能解決這個問題?
我可以將Receive()
重命名爲如下,但我寧願將它保留爲Receive()
。
public interface ICommunication
{
int Send(Dictionary<string, string> d);
int Send(byte[] b);
Dictionary<string, string> ReceiveDictionary();
byte[] ReceiveBytes();
}
你不能這樣做,因爲語言設計者認爲它會引入太多的含糊之處。你必須給他們分開的名字。請參閱此處進行討論:http://stackoverflow.com/questions/442026/function-overloading-by-return-type –