Dictionnary使用注意事项

来源:互联网 发布:中昌数据董事长 编辑:程序博客网 时间:2024/06/07 18:32
foreach (var item in m_screenPointDic)
            {

                //你可以通过直接访问访问他的键和值

debug.Log(item.Key + item.Value)

}

//如果你在foreach中对其进行更改,请注意应当按照如下操作

int length = m_screenPointDic.Count;
        TwoPoint[] keyArr = new TwoPoint[length];//声明一个等长数组
        m_screenPointDic.Keys.CopyTo(keyArr, 0);//将原数组的值拷贝过去
        for(int i =0;i< length; i++)
        {
            m_screenPointDic[keyArr[i]] = true;//通过键修改他的值
        }


//当面对一个自定义类型的dic时候,trygetvalue的时候要注意

public class TwoPoint
{
    public int x;
    public int y;
    public TwoPoint(int x,int y)
    {
        this.x = x;
        this.y = y;
    }
}

//定义一个字典

private Dictionary<TwoPoint, bool> m_screenPointDic;

//添加值没问题,但是获得值的时候要注意

这样是错误的:m_screenPointDic._TryGetValue(new TwoPoint(x, y)

//我的理解是每一个变量都是引用的一个地址,两个地址在一起比较的时候肯定不是相同的,所以即使你添加了相同的键,那么这个结果也依然是false

如dic.Add(new TwoPoint(1,3),true);

dic._Trygetvalue(new TwoPoint(1,3)) 为false,而不为true

//正确的比对姿势应当是

if (item.Key.x == x && item.Key.y == y && item.Value == true)

原创粉丝点击