我有一个C#的奇怪行为。
我有一个包含静态成员的类,看起来像这样:
我这样使用它(假设myObj.Status是一个Id为1且名称为“Created”的Status实例):
它正常工作,两个对象是相等的。但如果我将我的状态类更改为以下内容:
那么这个语句的意思是:
不再工作,两个对象是不同的。
我不明白为什么?
我有一个包含静态成员的类,看起来像这样:
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且名称为“Created”的Status实例):
Assert.AreEqual(myObj.Status, Status.Created);
// True
它正常工作,两个对象是相等的。但如果我将我的状态类更改为以下内容:
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
不再工作,两个对象是不同的。
我不明白为什么?