C#关于实现接口,方法重载的问题

我有个接口IRoom,里面有个方法
int IRoomAddRoom();
我有个类Room
我用Room实现了IRoom接口
然后Room类中我自己实现了这个方法,并且让系统自动生成了这个方法,生成的方法分别如下:
public int AddRoom(){}
int IRoom.AddRoom(){}
我想知道的是,这里肯定不叫方法重载吧,因为跟方法重载的定义都不符合。
但是这里算是什么?方法名相同,参数相同。那这算是什么。关键是系统并没有给我报错。。。我很纠结,高手帮忙解答一下吧谢谢了哈。。

这与方法重载没关系。他们的区别就在于一个是接口的隐式实现,一个是显示实现。
public interface IRoom
{
int AddRoom();
}

public class Room : IRoom
{
public int AddRoom()
{
throw new Exception("The method or operation is not implemented.");
}

int IRoom.AddRoom()
{
throw new Exception("The method or operation is not implemented.");
}
}
正常情况下,如果你这样调用Room:
Room room = new Room();
room.AddRoom();
那么执行的是AddRoom方法,这成为隐式实现。
如果这样调用Room:
Room room = new Room();
((IRoom)room).AddRoom();
那么执行的是IRoom.AddRoom()方法。这称之为显示实现。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-14
同学,你对重载理解不够啊
首先,接口中只是定义了方法,没有实现方法
在继承了接口的类中必须实现方法,这个时候和重载没有任何关系,相反,如果你没有显式的实现接口中定义的方法,程序反而会报错,你要理解接口的功能。

重载是具有不同签名的同名函数,在后面的继承中你还会碰到override(覆盖,重写),注意把定义弄清楚追答

你麻 痹你在Room类里面大大的两个方法,你没有实现?学了屁点东西就以为自己很了不起?就你这德行也好意思学C#,像你这种垃圾货色也就只配问这种低级问题,回答了自己理解不了还在那里唧唧歪歪,没修养就滚 蛋,不要上百度知道。请教问题还尼玛这么得瑟,你算什么东西,骂人谁不会。

第2个回答  2011-05-14
这是显式实现接口(int IRoom.AddRoom(){}),默认为public,(我记得是默认为public啊,呵呵)就是public int IRoom.AddRoom
(){},你可以在网上查有关显式接口的实现,接口有显式和隐式之分,看几个例子就明白了
相似回答