我不确定这是什么电话或如何谷歌解释,但这里是
让我说我有一个接口调用IView和一个继承IView的类调用View类。在某些项目中,我看到以下代码:
IView view = new View();
为什么这样?为什么不做呢
var view = new View();
是否有用于声明接口然后创建View对象的目的?为什么不做第二步?
答案 0 :(得分:2)
如果您使用var
关键字,则会自动检测变量的类型,可能属于View
类型,而不是IView
。对于您的代码的读者来说,您实际上希望拥有IView
引用更清楚。
接口的概念是,哪个类实现它们并不重要,所以你的代码建立在知道这个..的东西..实现所有IView的属性和方法,忽略它是哪个类。
这样的设置可以让您以后轻松插入不同的类。您可以将此行替换为对IView factory的调用,但您根本不知道它返回的是哪个类实例。
答案 1 :(得分:1)
您可能需要查看除了View之外的其他内容,例如,如果View是一个SpecialView类,那么var view
将不允许您稍后为其分配GenericView的内容,即使他们都有一个IView接口。