C#【进阶】常用泛型数据结构类

常用泛型数据结构类

在这里插入图片描述

1、List

1、List的本质
List是C#封装好的类,本质是一个可变类型的泛型数组
2、声明
List<int> list1 = new List<int>();
List<string> list2 = new List<string>();
List<string> listStr = new List<string>();
3、增删查改
增
    list1.Add(11);
    list2.AddRange(listStr);
	list1.Insert(0,66);//1.移除指定元素
    list1.Remove(11);
    //2、移除指定位置元素
    list1.RemoveAt(0);
    //3、清空
    list1.Clear();//1、查看指定位置元素
    Console.WriteLine(list1[0]);
    //2、查看元素是否存在
    if (list1.Contains(11))
    {
   
        Console.WriteLine("存在");
    }
    //3、正向查找元素位置
    int index = list1.IndexOf(11);
    Console.WriteLine(index);
    //4、反向查找元素位置
    index = list1.LastIndexOf(11);
    Console.WriteLine(index);
改
    list1[0] = 22;
4、遍历
//长度
Console.WriteLine(list1.Count);
//容量
Console.WriteLine(list1.Capacity);
//for循环遍历
for (int i = 0; i < list1.Count; i++)
{
   
    Console.WriteLine(list1[i]);
}
//迭代器遍历
foreach (int i in list1)
{
   
    Console.WriteLine(i);
}
思考 存储基类类型列表
//一个Monster基类,Boss和Gablin类继承它
//在怪物类的构造函数中,将其存储到一个怪物List中
//遍历列表可以让Boss和Gablin对象产生不同攻击

Boss boss1 = new Boss();
Boss boss2 = new Boss();
Gablin Gablin1 = new Gablin();
Gablin Gablin2 = new Gablin();
for (int i = 0; i < Monster.monsters.Count; i++)
{
   
    Monster.monsters[i].Atk();
}
abstract class Monster
{
   
    public static List<Monster> monsters = new List<Monster>();
    public Monster()
    {
   
        monsters.Add(this);
    }
    public abstract void Atk();
}
class Gablin : Monster
{
   
    public override void Atk()
    {
   
        Console.WriteLine("哥布林的攻击");
    }
}
class Boss : Monster
{
   
    public override void Atk()
    {
   
        Console.WriteLine("Boss的攻击");
    }
}

2、Dictionary

1、Dictionary的本质
可以将Dictionary理解为:拥有泛型的Hashtable
它是基于键的哈希代码组织起来的键值对
键值对类型从Hashtable的object变为了可以自己指定的泛型
2、声明
Dictionary<int,string> dictionary = new Dictionary<int,string>();
3、增删查改
//不能出现相同名的键
    dictionary.Add(1, "aaa");
    dictionary.Add(2, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值