【摘要】:4.1.3 隐式引用转换隐式引用转换包括以下几类:从任何引用类型到对象类型的转换。从元素类型为Ts的数组类型S到元素类型为Tt的数组类型T转换,这种转换需要满足下列条件:①S和T只有元素的数据类型不同,但它们的维数相同;②Ts和Tt都是引用类型;③存在从Ts到Tt的隐式引用转换。下面的程序就无法通过编译,因为数组的元素类型是值类型,C#中不存在这样的隐式转换。
4.1.3 隐式引用转换
隐式引用转换包括以下几类:
(1)从任何引用类型到对象类型的转换。
(2)从类类型s到类类型t的转换,其中s是t的派生类。
(3)从类类型s到接口类型t的转换,其中类s实现了接口t。
(4)从接口类型s到接口类型t的转换,其中t是s的父接口。
(5)从元素类型为Ts的数组类型S到元素类型为Tt的数组类型T转换,这种转换需要满足下列条件:
①S和T只有元素的数据类型不同,但它们的维数相同;
②Ts和Tt都是引用类型;
③存在从Ts到Tt的隐式引用转换。
(6)从任何数组类型到System.Array的转换。
(7)从任何代理类型到System.Delegate的转换。
(8)从任何数组类型或代理类型到System.ICloneable的转换。
(9)从空类型null到任何引用类型的转换。
下面的程序就无法通过编译,因为数组的元素类型是值类型,C#中不存在这样的隐式转换。
【程序清单4-3】
而下面这段程序则是正确的。
【程序清单4-4】
[程序清单4-5]很有趣,它给出了常用的值类型在系统环境中的原型定义。
【程序清单4-5】
程序的输出如图4-3所示。
图4-3 直接输出数组名的结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。