加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 具有属性的奇怪行为

发布时间:2020-12-16 01:54:51 所属栏目:百科 来源:网络整理
导读:我对C#有一种奇怪的行为. 我有一个包括静力学的课程,有些像这样的东西: public class Status { public int Id { get; internal set; } public string Name { get; internal set;} public static Status Created = new TicketStatus { Id = 1,Name = "Create
我对C#有一种奇怪的行为.

我有一个包括静力学的课程,有些像这样的东西:

public class Status
 {
     public int Id { get; internal set; }
     public string Name { get; internal set;}

     public static Status Created = new TicketStatus { Id = 1,Name = "Created" };
 }

我这样使用它(假设myObj.Status是一个状态实例,Id = 1且Name =“Created”):

Assert.AreEqual(myObj.Status,Status.Created);
    // True

它工作正常,两个对象都是平等的.

但是,如果我将我的Status类更改为:

public class Status
 {
     public int Id { get; internal set; }
     public string Name { get; internal set;}

     public static Status Created
     {
        get { return new TicketStatus { Id = 1,Name = "Created" }; }
     }
 }

然后声明

Assert.AreEqual(myObj.Status,Status.Created);
    // False

不再起作用,两个对象都不同.

我不明白为什么?

解决方法

这很简单 – 您要比较引用(内存地址),而不是对象属性.您需要覆盖类中的相等操作. Equals方法和GetHashCode也.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读