这两个演员之间的区别

klc*_*lce 3 c# interface class object

我真的不熟悉铸造.因此,您可以随意编辑或评论我的问题的更改.

假设我有一个实现接口的类:

public class Class1: Interface1
{
}
Run Code Online (Sandbox Code Playgroud)

这两者之间的区别是什么?:

Interface1 myObject = new Class1();
Run Code Online (Sandbox Code Playgroud)

Class1 myClassObject = new Class1();
Interface1 myObject = (Interface1) myClassObject;
Run Code Online (Sandbox Code Playgroud)

第一个也是铸造的一种形式吗?

编辑:

每个人做什么?

Sas*_*nig 5

第一个确实是隐式演员.引用微软:

对于引用类型,从类到其任何一个直接或间接基类或接口始终存在隐式转换.不需要特殊语法,因为派生类总是包含基类的所有成员.

第二次演员是明确的转换,并且如上所述,已经提到的并不是必需的.当某些信息在转换过程中可能会丢失并告诉编译器如何处理时,显式转换是必要的.

微软有一篇关于投射的好文章:http://msdn.microsoft.com/en-us/library/ms173105.aspx