public class Customer
{
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public struct Customer
{
public int CustomerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
最佳答案
您的第二个片段是一个可变结构。这是一个非常糟糕的主意,IMO - 它们在各种不同的情况下表现得很奇怪,因为值可以在您可能不期望的情况下被复制。
当然,您可以创建不可变 结构,有时这是合适的 - 但我个人认为引用类型行为通常更自然。对于结构,您还需要担心这样一个事实,即无论您放置什么构造函数,总是可以将变量设置为默认值 - 因此数字类型的字段将为零,引用类型为 null 等。这很烦人必须处理无处不在的无效对象的可能性,而对于类,您可以向构造函数(或工厂方法)添加适当的验证,以确保您唯一需要担心的是空引用。
效率论点最终变得棘手,因为双方都有利有弊,具体取决于您对对象的处理方式。
要缩短一个很长的答案(为时已晚?)——我会默认使用类;为自然个体值(例如“瞬间”或“整数”)保存值类型。
关于c# - 在构建 POCO 或简单的 DTO 时,我可以使用结构而不是类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806606/