gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:12:43 26 4
gpt4 key购买 nike

我对 C# 有一种奇怪的行为。

我有一个包含静力学的类(class),就像那样:

 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"的 Status 实例):

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 也是。

关于c# - 具有属性的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591939/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com