C# 如何在公共结构中预先设置值?
} 我想预先设置total的值 建议我最好的方法!C# 如何在公共结构中预先设置值?,c#,.net,struct,C#,.net,Struct,} 我想预先设置total的值 建议我最好的方法! 谢谢大家! 您可能不应该为此实体使用结构。和 public struct customerItemListStruct { public int ID { get; set; } public string name { get; set; } public double rate { get; set; } public int quantity { get; set;
谢谢大家! 您可能不应该为此实体使用结构。和
public struct customerItemListStruct {
public int ID { get; set; }
public string name { get; set; }
public double rate { get; set; }
public int quantity { get; set; }
//public double total = rate * quantity;
以下可能更合适:
public double total
{
get
{
return rate * quantity;
}
}
您可能不应该为此实体使用结构。和 以下可能更合适:
public double total
{
get
{
return rate * quantity;
}
}
现有答案涵盖了实现这一点的最简单方法。但是,如果您访问总计的次数可能比更新速率和数量的次数多得多,那么您可以更改周围的内容,以便在每次访问时不计算
Total
,而是在更改Rate
或Quantity
时重新计算
public class CustomerItemList {
public int ID { get; set; }
public string Name { get; set; }
public double Rate { get; set; }
public int Quantity { get; set; }
public double Total {
get { return Rate * Quantity; }
}
}
通常,让
Total
进行计算是最好的方法,但在重要的情况下,了解备选方案总是很有用的。现有答案涵盖了最简单的方法。但是,如果您访问总计的次数可能比更新速率和数量的次数多得多,那么您可以更改周围的内容,以便在每次访问时不计算Total
,而是在更改Rate
或Quantity
时重新计算
public class CustomerItemList {
public int ID { get; set; }
public string Name { get; set; }
public double Rate { get; set; }
public int Quantity { get; set; }
public double Total {
get { return Rate * Quantity; }
}
}
通常,让
Total
进行计算是最好的方法,但在重要的情况下,了解备选方案总是很有用的。如果预期项目具有值语义,那么将其变为可变类将导致灾难。如果调用SomeDataSource.GetCustomer(whatever)
并获取一个CustomerItemList
,对列表的更改(1)将可预测地影响数据源中的项,(2)不可预测地影响宇宙中的任何其他内容,除非或直到更改的项传递回数据源,或(3)以任意且不一定可预测的方式影响宇宙中的其他事物?可变类类型可以执行上述任何操作;开放字段结构始终在好的点上执行第二个操作。如果您提到的约束是有问题的,那么Actor模式将是一个合适的选择。对于OO程序员来说,可变值类型通常更难推理,因为它们的语义不同,更糟糕的是,只是不同而已。结构肯定不是邪恶的——它们只是在使用不当时才可能存在。基于名称CustomerItemList
这里感觉结构可能是错误的选择。基于名称,我可能同意,但考虑到内容,我认为名称更可能是CustomerList
。我对编程感到恼火的一点是,混杂对象引用是所有事物的正确数据类型(在Java中,它是唯一的非原语)。在许多情况下,让代码读取、更改和写回(覆盖旧项或创建与旧项类似的新项)都很有用。在这样的上下文中,对象被用作一个分段可变的值,将其表示为分段可变的值似乎是最自然的。如果期望该项具有值语义,那么将其变为可变类将导致灾难。如果调用SomeDataSource.GetCustomer(whatever)
并获取一个CustomerItemList
,对列表的更改(1)将可预测地影响数据源中的项,(2)不可预测地影响宇宙中的任何其他内容,除非或直到更改的项传递回数据源,或(3)以任意且不一定可预测的方式影响宇宙中的其他事物?可变类类型可以执行上述任何操作;开放字段结构始终在好的点上执行第二个操作。如果您提到的约束是有问题的,那么Actor模式将是一个合适的选择。对于OO程序员来说,可变值类型通常更难推理,因为它们的语义不同,更糟糕的是,只是不同而已。结构肯定不是邪恶的——它们只是在使用不当时才可能存在。基于名称CustomerItemList
这里感觉结构可能是错误的选择。基于名称,我可能同意,但考虑到内容,我认为名称更可能是CustomerList
。我对编程感到恼火的一点是,混杂对象引用是所有事物的正确数据类型(在Java中,它是唯一的非原语)。在许多情况下,让代码读取、更改和写回(覆盖旧项或创建与旧项类似的新项)都很有用。在这样的上下文中,对象被用作分段可变值,因此将其表示为分段可变值似乎是最自然的。