C# 使用类或接口c声明对象时的差异#

C# 使用类或接口c声明对象时的差异#,c#,class,interface,C#,Class,Interface,我无法找到令人信服的答案,将对象声明为类或接口的确切区别是什么 下面两个代码之间的区别是什么 ILogger log = new MyLogger(); //ILogger is an interface and MyLogger class implements ILogger 及 两者都会创建类型为MyLogger的对象,那么这两者之间的区别是什么。否,如果您从对象创建的角度考虑,但如果您声明为 ILogger log = new MyLogger(); 然后,您将能够仅访问那些函数和属

我无法找到令人信服的答案,将对象声明为类或接口的确切区别是什么

下面两个代码之间的区别是什么

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


两者都会创建类型为
MyLogger
的对象,那么这两者之间的区别是什么。

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

ILogger log = new MyLogger();
然后,您将能够仅访问那些函数和属性,而无需添加
cast
,这些函数和属性是在接口
ILogger
中声明的,但另一方面是通过声明

MyLogger log = new MyLogger();

当类实现接口时,您将能够访问类
MyLogger
以及接口
ILogger
的所有函数和属性
ILogger

阅读这里的简短说明。但请在提问之前做任何研究。我想说基本上是line
ILogger log=new MyLogger()
希望日志的类型能够实现
ILogger
接口和行
MyLogger log=new MyLogger()要求日志为
MyLogger
类型。
MyLogger log = new MyLogger();