2014-09-10 50 views
0

我在另一個問題中發現了example。我想知道wat的目的是由Question()方法服務的。這似乎是當創建Question對象時,Answer屬性被創建爲Answer [s]的List對象。爲什麼在創建列表對象的模型中創建方法

這是我第一次看到這種技術,作爲一名新程序員,這種模式有什麼好處?

public class Question 
{ 
    public Question() 
    { 
     this.Answers = new List<Answer>(); 
    } 
    public int QuestionId { get; set; } 
    public string Title { get; set; } 
    public virtual ICollection<Answer> Answers { get; set; } 

} 

public class Answer 
{ 
    public int AnswerId { get; set; } 
    public string Text { get; set; } 
} 

回答

0

我覺得這個模式對於使對象的消耗更容易。也就是說,通過在構造函數中創建Answers列表,可以確保Answers不會爲空。它使得使用Question對象更容易。因此,在消費問題的目標代碼,你可以做到這一點

foreach (Answer in question.Answers) 
{ 
    ... 
} 

,而無需首先檢查是否questions.Answers爲null:

if (question.Answers != null) 
{ 
    foreach (Answer in question.Answers) 
    { 
     ... 
    } 
} 
0

我認爲,這種技術被用來當你爲某些原因不想使用lazy loading。啓用延遲加載並正確配置POCO類後,您不必初始化您的收藏導航屬性,它會在您首次「觸摸」它時自動填充。