Dictionnary使用注意事项

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值