var dog =dogCage.TakeOut();直接把值返回给了dog,如果有多个值,dog能装下吗,还是只会存储最后一个值,dog能调用Dog类PrintName(),原理是什么
dog的类型是TakeOut()函数返回的类型,如果返回的是数组就可以储存多个值,
dog可以调用Dog类的PrintName(),是因为dog被动态定义为了Dog类(TakeOut()函数返回了Dog类)
C#提供了三种类似功能的关键字:
object:所有类型的基类,可以存储任何类型,但不能调用其方法(强制转换后可以);对应编码阶段,由编码人员判定它的类型进行强转。
var:类型占位符,由编译器判定类型,用它定义的变量不用强制转换,可以调用方法。
dynamic:真正的动态类型,它的类型在运行是解析,可以使用方法(但是在编码时没有提示)。