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

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

发布了15 篇原创文章 · 获赞 7 · 访问量 1925

猜你喜欢

转载自blog.csdn.net/weixin_40875853/article/details/97400274