我对 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
不再起作用,两个对象都不同。
我不明白为什么?