
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; } }} @H_301_7@我正在使用NHibernate. Person类被用作组件,因为“PeopleInfo”表在每行中有超过1个人. People()属性背后的想法是提供一个可以循环的只读列表.有没有更好的方法来做到这一点,还是认为这个解决方案可以接受?解决方法 @H_301_7@The IDea behind the People property is to provIDe a read only List that can be looped over. Is there a better way to do this or is this solution consIDered acceptable?@H_301_7@如果这是你的意图那么你还没有实现它;你提供了一个可以循环的可变列表. @H_301_7@幸运的是,每次都提供不同的可变列表,但您仍然提供可变列表. @H_301_7@我倾向于实际提供一个不可变的列表.有很多方法可以做到这一点.如果您实际提供了一个不可变列表,那么您还可以获得额外的好处,即可以懒惰地计算列表,然后无限期地缓存和重新使用,而不是每次请求时重新构建. @H_301_7@如果您需要索引访问,那么我将创建一个ReadonlyCollection并将其包装在列表的单个实例周围,然后缓存并重新使用只读集合.请注意,如果您改变基础列表,则只读集合将显示为mutate;它只是一个只读列表,它不是一个不可变列表. @H_301_7@如果您不需要索引访问,那么我将通过返回IEnumerable< T>来指示而不是List< T>.然后,您可以返回您选择的任何不可变集合. 总结
以上是内存溢出为你收集整理的c# – 在属性中声明变量被认为是不好的做法吗?全部内容,希望文章能够帮你解决c# – 在属性中声明变量被认为是不好的做法吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)