x
瞬间懵
看到一段代码,这样的...
private void SomeMethod1() { Int32 x = 1, y = 2; IComparable c = x; //... }
一下惊呆了...心里想的是:还有这种操作...给IComparable类型的变量c赋值为int类型的x...
然后我又这样...
IDisposable d = 9; //报错→无法将类型“int”隐式转换为“System.IDisposable”
可能接口用的比较少吧...脑袋一下瓦特了...
还犯二的去搜了一下[无法将类型“int”隐式转换为“System.IDisposable”]...
你所知道的,见到不一定认识...
“接口继承的一个重要特点是,凡是能使用具名接口类型的实例的地方,
都能使用实现了接口的一个类型的实例。”--摘自《CLR via C#》
原来是这样的...
public void 原来如此() { IComparable c1 = null; //使用[IComparable]的实例的地方[下面的c1所在的位置] IComparable c2 = c1; //都能使用实现了接口[IComparable]的一个类型[Int32]的实例[@int] Int32 @int = new Int32(); c2 = @int; }
也符合设计原则[里氏替换原则(LSP)]
纸上得来终觉浅,绝知此事要躬行...
很多知识从书本上学到了,但是实际中运用的并不多,大家知道的,我就很少定义变量为接口的这种写法[IComparable c1 = null;IList<int> list = new List<int>();]...
用着OO的框架,写着面向过程范式的代码...
也知道设计原则和接口的用法,并且看到
“接口继承的一个重要特点是,凡是能使用具名接口类型的实例的地方,
都能使用实现了接口的一个类型的实例。”
这句的时候,我就想到了,里氏替代原则[所有引用基类(父类)的地方必须能透明地使用其子类的对象]
但是真的遇上了还是会懵...基础要懂,还要会灵活运用啊...
让各位同仁贱笑了...GG
x