C#泛型概述(一)

一直做项目做到现在终于是有空翻翻书本学习了,这次我来讲讲泛型,说到泛型,我们借此要简单讲讲Object类型。

 

一、Object类型与泛型的联系

Object类型,基本接触过编程的都知道我们所有的类都是继承于这个类,也就是说他是所有类的爸爸,它可以引用任何的类,怎么引用,例如这样

class Objectson
    {
        Object obj = new ManagementPath();// ManagementPath()来自System.Management
        int i=new ManagementPath();//这里就会报出错误:无法将类型"System.Management.ManagementPath"隐式转换成为"int"     

    }

那这跟我们要说的泛型有什么联系呢,我们举个例子来讲讲,我们创建一个Object类型的数组,这样我们的数组就能装载各种类型的数据如下

        static void Main(string[] args)
        {
            int i = 1;      //int类型
            double d = 2.0;//double类型
            float f = 3;//float类型
            char c = 'c';//char类型
            string s = "你好"; //string类型
            Object[] data = new object[5] {i,d,f,c,s};//创建个容量为5得object类型数组,并将其逐一装箱
        }

现在我们把各种类型的数据装进去这个数组了,这时侯我们要取出来就出现问题了

 /****第一,不同类型拆箱都要加上强制类型转换,增加程序员负担****/
 int i_in =(int)data[0];     //拆箱成int类型需要加强制类型转换
 double d_in = (double)data[1];//拆箱成double类型需要加强制类型转换
 /****第二,若类型是自定义类型例如自己创建两个类为Human、Animal,拆箱时使用强制转换类型虽然不会出错,但是运行时会出错,因为这两个类未必能兼容****/
Person person=(Person)data[0];  //假设data[0]是Animal

程序员必须得记住这里面有什么类型,如果不小心犯错,就可能造成运行时错误,泛型的设计宗旨就是为了避免程序员犯这种错误。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值