有没有人对如何设计C#中的容器类有任何建议,其中包含超过30个变量?
我把它写成一组变量,因为有几种不同的类型,例如:字符串或日期时间,但我认为将它们全部存放在对象字典中并将其属性名称作为键可能会更好?
答案 0 :(得分:5)
如果需要所有字段,则需要它们。使用字典只能 增加开销并产生额外的内存成本。字典方法在一些特定场景中可能很有用,例如属性包实现和稀疏事件处理程序(因为事件是最明显的稀疏数据)。
如果稀疏地使用这些字段(即通常不会使用多个字段),那么可能会将相关字段推入多个内部类(每组相关字段) - 即代替:
class Foo {
string userName;
int userId;
string orderReference;
DateTime orderDate;
...
}
类似的东西:
class Foo {
class UserInfo { // move this outside if it makes sense to re-use it
public int Name {get;set;}
public int Id {get;set;}
}
UserInfo user;
class OrderInfo { // move this outside if it makes sense to re-use it
public string Reference {get;set;}
public string Date {get;set;}
}
OrderInfo order;
}
然后,当您必须存储用户数据时,请创建一个新的UserInfo
;如果您不需要用户数据,请保留user
null。