interface ISerialize
{
void SaveData();
}
interface IDataStore
{
void SaveData();
}
class Test:ISerialize,IDataStore
{
public void SaveData()
{
.......
}
}
虽然可以通过编译,但是运行的时候都会有错误产生,因为调用的行为的结果对于使用这个类的程序员老说都是不清楚的.
main()
{
Test test=new Test();
if(test is ISerialize)
{
Console.WriteLine("ddddd");
}
if(test is IDataStore)
{
Console.WriteLine("sssss");
}
}
这段代码,is操作符对于两个接口都是成功的.这表示这两个接口都是被实现的.但事实并非如此.编译器肯定会有警告
然而,如果客户端检查其中一个接口的实现----两个接口的实现都是成功的----而同时又碰巧视图使用那个没有真正实现的那个接口,就会发生意外.
使用接口名字限定
本文探讨了在C#中实现多个具有相同方法签名的接口时可能遇到的问题,特别是当这些接口未明确区分时如何导致混淆及运行时错误。通过具体代码示例展示了潜在问题,并提出了使用接口名称限定来解决这一问题的方法。
7

被折叠的 条评论
为什么被折叠?



