C#的隐式引用转换

隐式引用转换包括以下几类:
 
●从任何引用类型到对象类型的转换
 
●从类类型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[];
本文来自编程入门网:http://www.bianceng.cn/Programming/csharp/200709/4343.htm


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值