当前位置: 首页 > news >正文

C# ArrayList

 ArrayList的本质

ArrayList是一个C#为我们封装好的类,
它的本质是一个object类型的数组,
ArrayList类帮助我们实现了很多方法,
比如数组的增删查改

ArrayList本质上是一个可以自动扩容的object数组

申明

需要引用命名空间using System.Collections;


            ArrayList array = new ArrayList();

array.Add(1);
array.Add("123");
array.Add(true);
array.Add(new object());
array.Add(new Test());
array.Add(1);
array.Add(true);

ArrayList array2 = new ArrayList();
array2.Add(123);
//范围增加(批量增加 把另一个list容器里面的内容加到后面)
array.AddRange(array2);

array.Insert(1, "12345676");
Console.WriteLine(array[1]);

 移除指定元素 从头找 找到删
 array.Remove(1);
 移除指定位置的元素
 array.RemoveAt(2);
 清空
 array.Clear();

得到指定位置的元素
Console.WriteLine(array[0]);

查看元素是否存在
if( array.Contains("1234") )
{
    Console.WriteLine("存在123");
}

正向查找元素位置
找到的返回值 是位置 找不到 返回值 是-1
int index = array.IndexOf(123);
Console.WriteLine(index);

Console.WriteLine(array.IndexOf(false));  返回值是-1

//反向查找元素位置
//返回时从头开始的索引数
index = array.LastIndexOf(true);
Console.WriteLine(index);

Console.WriteLine(array[0]);
array[0] = "999";
Console.WriteLine(array[0]);

遍历

长度
Console.WriteLine(array.Count);
容量
Console.WriteLine(array.Capacity);

for循环遍历
for (int i = 0; i < array.Count; i++)
{
    Console.WriteLine(array[i]);
}


迭代器遍历
foreach (object item in array)
{
    Console.WriteLine(item);
}


using System.Collections;class BagManager
{int money;ArrayList array;public BagManager() {money=50;array = new ArrayList();}public void  BuyObject( ShowFunction objects){if (money > objects.BuyPrice){money -= objects.BuyPrice;Console.WriteLine("买了一个{0}还剩{1}元",objects .Name, money);array.Add(objects);}else{Console.WriteLine("钱不够");}}public void SellObject(ShowFunction objects){if (array.Contains(objects)){array.Remove(objects);money += objects.SellPrice;Console.WriteLine("卖了一个{0},{1}元,现在还剩{2}元", objects.Name, objects.SellPrice, money);}else{Console.WriteLine("查无此物");}}public void ShowFunction(int a){if (a >= array.Count){Console.WriteLine("超出索引范围");}else{ for (int i = 0; i < array.Count; i++){(array[i] as ShowFunction).Show();}}}}
interface ShowFunction
{string Name { get; }int BuyPrice{get;}int SellPrice{get;}void Show();
}
class Gun : ShowFunction
{public  int BuyPrice => 10;public  int SellPrice => 8;public string Name =>"Gun";public void Show(){Console.WriteLine("对敌人造成5点伤害");}
}
class BloodBag : ShowFunction
{public string Name => "BloodBag";public int BuyPrice => 5;public int SellPrice => 5;public void Show(){Console.WriteLine("恢复30点生命值");}
}
class Knife : ShowFunction
{public string Name => "Knife";public int BuyPrice => 3;public int SellPrice => 2;public void Show(){Console.WriteLine("对敌人造成8点伤害");}
}
class Program
{public static void Main(){BagManager bag = new BagManager();Gun gun = new Gun();BloodBag bloodBag = new BloodBag();Knife knife = new Knife();  bag.BuyObject(gun);bag.BuyObject(bloodBag);bag.BuyObject(knife);bag .SellObject(gun);bag.ShowFunction(0);}
}


http://www.mrgr.cn/news/7522.html

相关文章:

  • SpringBoot 3.x+Mybatis Plus多数据源极简配置
  • java整合DL645-2007与Dl645-1997
  • 测试用例(还需要输入1个字)
  • uniapp点击预览图片,两种效果
  • Open WebUI快速应用ollama模型,实现通过web交互模型,实战llama3
  • 下拉菜单 匹配搜索
  • Docker 启动单机版ES
  • SSRF漏洞
  • C++初学(15)
  • python requests 的retry策略
  • Java | Leetcode Java题解之第368题最大整除子集
  • ant design pro access.ts 是如何控制多角色的权限的
  • 设计模式 5 原型模式
  • 机械学习—零基础学习日志(如何理解概率论6)
  • Java集合框架--LIST,ArrayList,LinkedList
  • 使用Jupyter Notebook实现Python编程
  • 关于类加载的问题
  • shallowReactive 与 shallowRef
  • 大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化
  • linux系统编程:网络通信