为什么我不能执行以下操作?具有相同名称和不同退货类型的会员的接口
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 –