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)
第一个也是铸造的一种形式吗?
编辑:
每个人做什么?
第一个确实是隐式演员.引用微软:
对于引用类型,从类到其任何一个直接或间接基类或接口始终存在隐式转换.不需要特殊语法,因为派生类总是包含基类的所有成员.
第二次演员是明确的转换,并且如上所述,已经提到的并不是必需的.当某些信息在转换过程中可能会丢失并告诉编译器如何处理时,显式转换是必要的.
微软有一篇关于投射的好文章:http://msdn.microsoft.com/en-us/library/ms173105.aspx