{
//你可以通过直接访问访问他的键和值
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)