c# – 在属性中声明变量被认为是不好的做法吗?
我有以下课程:
public class PeopleInfo { public virtual int ID {get; protected set;} public virtual Person Person1 {get;set;} public virtual Person Person2 {get;set;} public virtual List<Person> People { get { var p = new List<Person>(); p.Add(Person1); p.Add(Person2); return p; } } } 我正在使用NHibernate. Person类被用作组件,因为“PeopleInfo”表在每行中有超过1个人. People()属性背后的想法是提供一个可以循环的只读列表.有没有更好的方法来做到这一点,还是认为这个解决方案可以接受? 解决方法
如果这是你的意图那么你还没有实现它;你提供了一个可以循环的可变列表. 幸运的是,每次都提供不同的可变列表,但您仍然提供可变列表. 我倾向于实际提供一个不可变的列表.有很多方法可以做到这一点.如果您实际提供了一个不可变列表,那么您还可以获得额外的好处,即可以懒惰地计算列表,然后无限期地缓存和重新使用,而不是每次请求时重新构建. 如果您需要索引访问,那么我将创建一个ReadOnlyCollection并将其包装在列表的单个实例周围,然后缓存并重新使用只读集合.请注意,如果您改变基础列表,则只读集合将显示为mutate;它只是一个只读列表,它不是一个不可变列表. 如果您不需要索引访问,那么我将通过返回IEnumerable< T>来指示而不是List< T>.然后,您可以返回您选择的任何不可变集合. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |