[C#中级] 泛型

 

定义

初级篇教学,前几篇文章有讲到集合,就是存储多个不同数据类型的集合。由此延伸出了泛型。泛型有两个特点。

 

1:用来约定数据集合中的数据类型,你可以理解为模板。比如游戏机厅的游戏机,玩的时候要投入游戏币,投其他的形状相似的货币不行。编程中的泛型就是在定义时就约定了数据集合的类型。好处是存取方便,你明确的知道该集合中存储的什么类型的数据,不需要做数据类型的转换了。

 

2:泛型也是一种数据类型。""指的是广义上的概念,"泛型"即是指广义上的数据类型。泛型具体是什么类型,取决于定义它时,设定的类型。

命名空间

 

之前的多线程篇忘记讲线程的命名空间了,是我的失误!。这里补

 

using System.Threading;

 

回到泛型。泛型关联的集合类的命名空间:

 

using System.Collections.Generic;

泛型相关的命名空间,在项目中,一般都是自动引用的。不需要你再去额外写命名空间。

 

下图是一个4.7.2版本的控制台程序默认引用的命名空间。

 

 

语法

List<T> list = new List<T>();

 

List<T>,这里使用了一个新的符号,尖括号"<>",里面有个T,这个T其实就是代指泛型对应的数据类型,这个类型在实际项目开发中,一般是一个我们自定义的类。例如:

public class User{
}
List<User> list = new List<User>();

这里就是我定义了一个User类,然后指定集合List的数据类型为User

 

ArrayList List<T>

 

初级篇集合中,我们讲了ArrayList,今天讲List<T>。两者之间的相同点是都支持对集合数据的增加、删除、获取。不同点是,ArrayList可以存储任何数据类型,List<T>则限定了数据类型。ArrayList在获取元素以后,需要进行数据转换,因为ArrayList中可能存储任何类型。List<T>中获取元素则不需要类型转换,因为限定了指定的数据类型。

 

例子

 

我们定义一个用户类,包含名称和年龄,并使用泛型集合存储他们。

 

首先我们定义一个用户类(User),其中包含姓名(Name)和年龄(Age),并有一个用来初始化的构造函数。代码如下:

public class User{    private string _name;    private int _age;
    public string Name    {        get { return _name; }        set { _name = value; }    }    public int Age    {        get { return _age; }        set { _age = value; }    }        public User(string name,int age)    {        Name = name;        Age = age;    }}

 

然后我们使用泛型集合,来定义多个用户,并且存储他们。

static void Main(string[] args){    List<User> list = new List<User>();
    User user1 = new User("马云", 31);    User user3 = new User("马冬梅", 22);    User user2 = new User("马化腾", 25);
    list.Add(user1);    list.Add(user2);    list.Add(user3);
    for (int i = 0; i < list.Count; i++) {        Console.WriteLine(list[i].Name + "年龄:" + list[i].Age);    }
    Console.ReadKey();}

可以看到,我定义了一个List<T>,并且指定数据类型为User.
然后实例化了三个User对象。

使用list.Add()方法,将元素添加到泛型集合中。

然后使用一个for循环,循环输出了List中的所有元素。

 

可以发现的是,我在使用下标访问list中的集合时,没有使用任何数据类型转换,直接可以访问对应成员的属性。这就是泛型的优点,在使用时,不需要对其成员进行数据转换。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值