问答详情
源自:5-1 泛型类

var dog =dogCage.TakeOut();直接把值返回给了dog,dog算什么类型,可以直接输出吗

var dog =dogCage.TakeOut();直接把值返回给了dog,如果有多个值,dog能装下吗,还是只会存储最后一个值,dog能调用Dog类PrintName(),原理是什么

提问者:FireWatch 2017-08-02 10:46

个回答

  • TheForgetTime_
    2017-08-03 16:36:34
    已采纳

    dog的类型是TakeOut()函数返回的类型,如果返回的是数组就可以储存多个值,

    dog可以调用Dog类的PrintName(),是因为dog被动态定义为了Dog类(TakeOut()函数返回了Dog类)

  • TheForgetTime_
    2017-08-03 16:54:43

    C#提供了三种类似功能的关键字:

    object:所有类型的基类,可以存储任何类型,但不能调用其方法(强制转换后可以);对应编码阶段,由编码人员判定它的类型进行强转。

    var:类型占位符,由编译器判定类型,用它定义的变量不用强制转换,可以调用方法。

    dynamic:真正的动态类型,它的类型在运行是解析,可以使用方法(但是在编码时没有提示)。