C# Dictionary、ArrayList、List

13 篇文章 0 订阅
int m_iRoleId = 2012;
string m_strRoleName = "小神";

C# Dictionary
public struct StRoleInfo
{
	public int roleId;
	public string roleName;
}
public Dictionary<int, StRoleInfo> m_iRoleInfoDic = new Dictionary();
如果要往m_iRoleInfoDic 通过唯一的Key值角色ID添加一条角色信息(里面有角色Id和角色名字):

StRoleInfo roleInfoTemp = new StRoleInfo();
roleInfoTemp.roleId = m_iRoleId;
roleInfoTemp.roleName = m_strRoleName;

添加之前,先看m_iRoleInfoDic 里是否已经有这条信息了(ContainKey(m_iRoleId  )),
如果有, 就直接通过Key值查找到这条信息进行修改就好了

if (m_iRoleInfoDic.ContainKey(m_iRoleId)
{
	m_iRoleInfoDic[m_iRoleId] = roleInfoTemp;
	return;
}
else
m_iRoleInfoDic.Add(m_iRoleId, roleInfoTemp);

其删除某一条角色信息 :m_iRoleInfoDic.Remove(m_iRoleId); 全部清空Clear();


类似 C++
struct StRoleInfo
{
	int roleId;
	string roleName;
}

map<int, StRoleInfo*> STROLEINFO_TEMPLIST;
STROLEINFO_TEMPLIST m_mapRoleInfoTempList;

StRoleInfo *roleInfoTemp = NULL;
STROLEINFO_TEMPLIST::iterator iter = m_mapRoleInfoTempList.find(m_iRoleId);
if (iter != m_mapRoleInfoTempList.end())
{
	roleInfoTemp = iter->second;
	if ((roleInfoTemp)
	{
		roleInfoTemp->roleId = m_iRoleId;
		roleInfoTemp->roleName = m_strRoleName;
	}
	return;
}
roleInfoTemp = new StRoleInfo;
roleInfoTemp->roleId = m_iRoleId;
roleInfoTemp->roleName = m_strRoleName;
m_mapRoleInfoTempList.insert(make_pair(m_iRoleId, roleInfoTemp));
其删除某一项:
STROLEINFO_TEMPLIST::iterator iter = m_mapRoleInfoTempList.find(m_iRoleId);
if (iter != m_mapRoleInfoTempList.end())
{
	StRoleInfo *roleInfoTemp = iter->second;
	SAFE_DELETE(roleInfoTemp);
	m_mapRoleInfoTempList.erase(iter);
}
ArrayList mArrayList = new ArrayList();
mArrayList.Add(); 、Insert根据下标插入、可装Object对象 ,取mArrayList[0],
删.Remove, 清空mArrayList.Clear(), 长度大小mArrayList.Count, 判断list包含某某对象mArrayList.Contains, ...

C# List
Public class ItemInfo
{
	Int m_iItemID;
	Int m_iItemLevel;
}
List<ItemInfo> m_ItemInfo = new List<ItemInfo>();
ItemInfo m_specificItem = null;

Void InitItemList()
{
	/*
	if (bIshas)//加和更新分开标示
	{
	ItemInfo.Add(itemInfoTemp);
	}
	else
	{
	for (int i = 0; i < ItemInfo.Count; i ++ )
	{
	if (ItemInfo [i]. m_iItemID == itemInfoTemp. m_iItemID)//如果已经有此Item 则更新 ,注意.Contains 要求对象及对象属性都要完全相同,而更新怎么可能值都相同呢,据说可以用Equals,不过没用过,还是for遍历
	{
	ItemInfo [i] = itemInfoTemp;
	}
	}
	}
	*/
	//test
	/*ItemInfo itemInfoTemp0= new ItemInfo(100,1);
	ItemInfo itemInfoTemp1 = new ItemInfo(300,5);
	ItemInfo itemInfoTemp2 = new ItemInfo(200,2);
	ItemInfo.Add(itemInfoTemp0);
	ItemInfo.Add(itemInfoTemp1);
	ItemInfo.Add(itemInfoTemp2);*/

}
Void SortItemList()
{
	For(int I = 0; I < m_ItemInfo.count; i++)
	{
		If(m_ItemInfo[i].m_iItemID == 300)//取出特定的一条
		{
			m_specificItem = m_ItemInfo[i];
			If(m_ItemInfo.Contains(m_specificItem))
			{
				m_ItemInfo.Remove(m_specificItem);//从要排序的list中移除
			}
		}
	}
	m_ItemInfo.Sort(CompareByLevel);//进行排序
	if (null != m_specificItem)
		m_ItemInfo.Insert(0, m_specificItem);//排序后,将我指定的特殊的一条置顶
	//这里 就可以用刚排序好的list了
}
Void CompareByLevel(ItemInfo one, ItemInfo two)//根据等级排序
{
	Int result = 0;
	If(one.m_iItemLevel < two.m_iItemLevel)
		Result = 1;
	//如果等级相同则按照ID排咯
	Else If(one.m_iItemLevel == two.m_iItemLevel && one.m_iItemID <  two.m_iItemID)
		Result = 1;
	Return result;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值