2013-10-22 98 views
-2

FormTemplateGroup錯誤並非所有的代碼路徑返回一個值

public class FormTemplateGroup : BaseEntity, IIerarhycal<FormTemplateGroup> 
{ 
    public virtual string Name { get; set; } 
    public virtual bool Active { get; set; } 
    public virtual FormTemplateGroup Parent { get; set; } 
    public virtual IList<FormTemplateGroup> Children { get; set; } 
} 

,我必須使用FormTemplateGroup類的一些方法

public FormTemplateGroup GetFormTemplateGroup(int id) 
    { 
     var formTemplateGroup = 
      FormTemplateGroupRepository.Query().FirstOrDefault(ftg => ftg.Id == id); 

     return formTemplateGroup; 
    } 

    public FormTemplate GetFormTemplate(int id) 
    { 
     var formTemplateGroup = GetFormTemplateGroup(id); 

     var formTemplate = 
       FormTemplateRepository.Query().FirstOrDefault(ft => ft.Group.Id == formTemplateGroup.Id); 

     return formTemplate; 
    } 

    public bool checkForChild(IList<FormTemplateGroup> groups) 
    { 
     foreach (FormTemplateGroup g in groups) 
     { 
      if (GetFormTemplate(g.Id) != null) return false; 
      if (g.Children.Count > 0) 
      { 
       return checkForChild(g.Children); 
      } 
      return true; 
     } 
    } 

但在方法checkForChild我得到一個錯誤

錯誤1'Arg.BI.BL.Services.Dictionaries.FormTemplateGroupService.checkForChild(System.Collections。 Generic.IList)': 並非所有代碼路徑都返回值 值D:\ svn \ ARG_BI \ Sources \ trunk \ Arg.BI \ Arg.BI.BL \ Services \ Dictionaries \ FormTemplateGroupService.cs 82 21 Arg.BI.BL

如何解決?

+1

通過添加返回條件在checkForChild方法foreach循環之外。 –

+1

在你的'checkForChild'方法中,如果'groups'沒有任何項目會發生什麼?在這種情況下,你也應該返回一些東西! –

回答

4

in checkForChild,如果groups中沒有項目,則不會執行foreach。你的方法永遠不會回來。

添加return false所述的foreach後,這樣的:

public bool checkForChild(IList<FormTemplateGroup> groups) 
{ 
    foreach (FormTemplateGroup g in groups) 
    { 
     if (GetFormTemplate(g.Id) != null) return false; 
     if (g.Children.Count > 0) 
     { 
      return checkForChild(g.Children); 
     } 
     return true; 
    } 
    return false; 
} 
+0

非常感謝幫助) – Heidel

2

您需要在foreach之外返回。

+0

非常感謝的解釋) – Heidel

2

如果CheckForChild方法中的groups參數爲空,則不存在return語句。

要麼在foreach循環後返回布爾值,要麼拋出異常。

+0

非常感謝解釋) – Heidel

2

您的checkForChild方法應該在循環後返回一些東西。 如果您沒有,並且groups中沒有FormTemplateGroup,編譯器將不知道該返回什麼。

+0

非常感謝解釋) – Heidel

相關問題