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操作符对于两个接口都是成功的.这表示这两个接口都是被实现的.但事实并非如此.编译器肯定会有警告
然而,如果客户端检查其中一个接口的实现----两个接口的实现都是成功的----而同时又碰巧视图使用那个没有真正实现的那个接口,就会发生意外.
使用接口名字限定