学习 Unity 3D游戏开发日常笔记(C# 第四周)、
2019.7.30(二)
目录
周二 | 周三 | 周三 |
---|---|---|
数组传值相关 | 栈Stack | 字典 |
ArrayList | Queue队列 | 字典_练习 |
ArrayList增、删、查、插 练习 | 泛型 | 委托 |
集合ArrayList_排序 | 泛型集合List | 委托可以当成一个变量进行传递:排序案例: |
Hashtable | 泛型集合List_练习 | 委托_事件 |
Hashtable 增、删、查 练习 | 观察者设计模式 |
数组传值相关
带ref:
不带ref:
ArrayList:
①可以动态增长的数组;
②可以自动扩展数组长度;
③增、删、查、改、插入数据;
④使用ArrayList需要引入using System.Collections;
1、
2、删除一个元素
3、根据元素下标号删除元素
4、从index位置开始删除count个元素
5、查找元素下标号
6、指定一个下标号插入一个元素
7、复制ArrayList中的数据到数组中
8、查、数组长度、数组中实际储存的数据数量
ArrayList增、删、查、插 练习:
using System.Collections;
namespace 集合ArrayList_练习
{
public class Item {
public int id;//唯一的
public string name;
public int count;
public Item(int id, string name, int count)
{
this.id = id;
this.name = name;
this.count = count;
}
public override string ToString()
{
return string.Format("id:{0},名字:{1},数量:{2}", id, name, count);
}
}
class BagDataManager {
private static BagDataManager instance;
public static BagDataManager Instance {
get {
if (instance == null) {
instance = new BagDataManager();
}
return instance;
}
}
private BagDataManager() {
}
ArrayList itemList = new ArrayList();
/// <summary>
/// 向列表中添加装备,如果已经有了此种装备,只添加数量,不再重新添加
/// </summary>
/// <param name="item"></param>
public void Add(Item item) {
for (int i = 0; i < itemList.Count; i++)
{
Item item1 = ((Item)itemList[i]);
if (item1.id == item.id) {
item1.count += item.count;
return;
}
}
itemList.Add(item);
}
/// <summary>
/// 删除一个元素
/// </summary>
/// <param name="item"></param>
public void Remove(Item item) {
for (int i = 0; i < itemList.Count; i++)
{
Item item1 = ((Item)itemList[i]);
if (item1.id == item.id)
{
itemList.Remove(item1);
return;
}
}
}
/// <summary>
/// 根据一个id查找一个Item对象
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Item GetItem(int id) {
for (int i = 0; i < itemList.Count; i++)
{
Item item = (Item)itemList[i];
if (item.id == id) {
return item;
}
}
return null;
}
/// <summary>
/// 将一个Item对象数据插入到ItemList中,
/// 如果;list中已经有了这个数据对象只修改数量
/// </summary>
/// <param name="item"></param>
/// <param name="index"></param>
public void Insert(Item item,int index) {
for (int i = 0; i < itemList.Count; i++)
{
Item mItem = (Item)itemList[i];
if (mItem.id == item.id) {
mItem.count += item.count;
return;
}
}
itemList.Insert(index, item);
}
public void Show() {
for (int i = 0; i < itemList.Count; i++)
{
Console.WriteLine(itemList[i].ToString());
}
}
}
class Program
{
static void Main(string[] args)
{
//Item:id 名字 数量
//BagDataManager:增加 删 查 插
Item item1 = new Item(101, "刀", 3);
Item item2 = new Item(102, "刀2", 4);
Item item3 = new Item(103, "刀3", 5);
Item item4 = new Item(104, "刀4", 6);
Item item5 = new Item(102, "刀2", 5);
BagDataManager.Instance.Add(item1);
BagDataManager.Instance.Add(item2);
BagDataManager.Instance.Add(item3);
BagDataManager.Instance.Add(item4);
BagDataManager.Instance.Add(item5);
//BagDataManager.Instance.Remove(item5);
//Item item = BagDataManager.Instance.GetItem(103);
// Console.WriteLine(item.ToString());
//BagDataManager.Instance.Insert(item3, 2);
BagDataManager.Instance.Show();
Console.ReadLine();
}
}
}
集合ArrayList_排序:
using System.Collections;
namespace 集合ArrayList排序
{
class Item : IComparable
{
public int id;
public string name;
public int atk;
public int def;
public Item(int id, string name, int atk, int def) {
this.name = name;
this.id = id;
this.atk = atk;
this.def = def;
}
public override string ToString()
{
return string.Format("id:{0} ,名字:{1},atk:{2},def:{3}", id, name, atk, def);
}
/// <summary>
/// 当这个类实现了IComparable接口,ArrayList调用了Sort方法时
/// 会自动调用此方法进行做对比,按照我们所设置的顺序进行排序
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public int CompareTo(object obj)
{
Item item = (Item)obj;
if (def > item.def)
{
return -1;
}
else {
return 1;
}
}
}
class Pro