【问题标题】:Difference when declaring objects with class or interface c# [closed]用类或接口c#声明对象时的区别[关闭]
【发布时间】:2013-12-06 07:36:55
【问题描述】:

我找不到令人信服的答案,将对象声明为类或接口之间的确切区别。

下面的代码有什么区别

ILogger log = new MyLogger(); //ILogger is an interface and MyLogger class implements ILogger

MyLogger log = new MyLogger();

两者都会创建MyLogger类型的对象,那么以上两者有什么区别。

【问题讨论】:

  • 阅读dotnet.dzone.com/articles/c-interfaces-what-are-they-and这里是简短的解释。但请在提问之前做任何研究。
  • 我会说基本上ILogger log = new MyLogger(); 行期望日志是实现ILogger 接口和行MyLogger log = new MyLogger(); 的东西的类型。预计日志是MyLogger 类型。

标签: c# class interface


【解决方案1】:

不,如果您从对象创建的角度考虑,但如果您声明为,则不同

ILogger log = new MyLogger();

那么您将只能直接访问那些函数和属性,而无需添加在接口ILogger 中声明的cast,但另一方面需要声明

MyLogger log = new MyLogger();

您将能够访问类MyLogger以及接口ILogger的所有功能和属性,因为类实现了接口ILogger

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2012-03-18
    • 2010-11-16
    • 2012-12-30
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多