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);}
}
