我有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
如何解决?
答案 0 :(得分:4)
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;
}
答案 1 :(得分:2)
你需要在foreach之外回来。
答案 2 :(得分:2)
如果groups
方法中的CheckForChild
参数为空,则没有返回语句。
在foreach
循环后返回一个布尔值,或抛出一个异常。
答案 3 :(得分:2)
您的checkForChild
方法应该在循环后返回一些内容。
如果不这样做,并且FormTemplateGroup
中没有groups
,则编译器将不知道要返回的内容。