Contains比较的是对象还是数据?
public List<Vector3> xx = new List<Vector3> { new Vector3(-4.7f, -96), new Vector3(-4.7f, -136), new Vector3(-4.7f, -176), new Vector3(-4.7f, -216) }; public void Start() { Vector3 x = xx[0]; bool j = xx.Contains(x); Verctor3 y = new Vector3(-4.7f, -96); bool k = xx.Contains(x); x.x = 4; bool i = xx.Contains(x); Debug.Log(i + "" + j+""+k); }
发现,i为false,j为true ,k为true。这里由于Vector3是结构体,属于值类型,所以比较数据。
然后又用一个类MyClass(中间只有一个int x成员)测试,发现比较的不是类成员,而是地址(或者是hashcode?)。因此,就算两个MyClass 对象 a 和 b 的成员x都为0,也是不想等的。