interface ILol
{
void LOL();
}
class Rofl : ILol
{
void ILol.LOL()
{
GlobalLOLHandler.RaiseROFLCOPTER(this);
}
public Rofl()
{
//Is there shorter way of writing this or i is there "other" problem with implementation??
(this as ILol).LOL();
}
}
答案 0 :(得分:10)
您已经实现了界面explicitly,通常您不需要这样做。相反,只需隐式实现它并像调用任何其他方法一样调用它:
class Rofl : ILol
{
public void LOL() { ... }
public Rofl()
{
LOL();
}
}
(注意您的实施也需要公开。)
答案 1 :(得分:9)
您可能希望将演员从(this as ILol)
更改为((ILol)this)
。允许as cast返回null,这可能会导致以后混淆错误以及编译器必须测试的错误。
答案 2 :(得分:5)
不要使用as
,只是施放:
((ILol)this).LOL();
答案 3 :(得分:0)
否则,如果您明确实现了该接口。如果通过从实现的方法中删除接口名称来使其隐式,它将按您的意愿工作。
void LOL()
{
GlobalLOLHandler.RaiseROFLCOPTER(this);
}
public Rofl()
{
LOL();
}
答案 4 :(得分:-2)
你根本不需要施放。由于ROFL
实施ILOL
,您只需致电this.LOL()
甚至只需LOL();