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;
}
C# Dictionary、ArrayList、List
最新推荐文章于 2023-11-08 09:34:28 发布