隐式引用转换包括以下几类:
●从任何引用类型到对象类型的转换
●从类类型s到类类型t的转换,其中s是t的派生类。
●从类类型s到接口类型t的转换,其中类s实现了接口t。
●从接口类型s到接口类型t的转换,其中t是s的父接口。
从元素类型为Ts的数组类型S向元素类型为Tt的数组类型T转换,这种转换需要满足下列条件:
●S和T只有元素的数据类型不同,但它们的维数相同。
●Ts和Tt都是引用类型。
●存在从Ts到Tt的隐式引用转换
●从任何数组类型到System.Array的转换。
●从任何代表类型到System.Delegate的转换。
●从任何数据类型或代表类型到System.ICLoneable的转换。
●从空类型(null)到任何引用类型的转换。
比如,下面的程序无法通过编译,因为数组的元素类型是值类型,C#中不存在这样的隐式转换。
程序清单6-3:
using System; class Test { public static void Main(){ float[] float_arr=new float[10]; int[] int_arr=new int[10]; float_arr=int_arr; } }
而下面这段程序则是正确的: 程序清单6-4: using System; class Class1 {} class Class2:Class1 {} class Test { public static void Main(){ Class1[] class1_arr=new Class1[10]; class2[] class2_arr=new Class2[10]; class1_arr=class2_arr; } }
程序6-5很有趣,它给出了我们常用的值类型在系统环境中的原型定义。
程序6-5:
using System; class Test { public static void Main(){ float[] float_arr=new float[10]; double[] double_arr=new double[10]; sbyte[] sbyte_arr=new sbyte[10]; byte[] byte_arr=new byte[10]; ushort[] ushort_arr=new ushort[10]; int[] int_arr=new int[10]; long[] long_arr=new long[10]; string[] string_arr=new string[10]; console.WriteLine(float_arr); Console.WriteLine(double_arr); Console.WriteLine(sbyte_arr); Console.WriteLine(byte_arr); Console.WriteLine(ushort_arr); Console.WriteLine(int_arr); Console.WriteLine(long_arr); Console.WriteLine(string_arr); } } 程序的输出结果是: System.Single[]; System.Double[]; System.Sbyte[]; System.Byte[]; System.Int16[]; system.Int32[]; System.Int64[]; System.String[];
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索class
, new
, int64_t
, 类型
, system
, console
, 空指针 隐式类型转换
, WriteLine
, 隐式类型转换
, js隐式类型转换
隐式接口
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。