关于List.Contains的问题

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,也是不想等的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值