错误 并非所有代码路径都返回值
本文关键字:路径 返回值 代码 错误 | 更新日期: 2023-09-27 18:36:19
我有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)': 并非所有代码路径都返回 value D:''svn''ARG_BI''Sources''trunk''Arg.BI''Arg.BI.BL''Services''Dictionaries''FormTemplateGroupService.cs 82 21 Arg.BI.BL
如何解决?
> 在checkForChild
中,如果groups
中没有项目,则不会执行foreach
。而且您的方法将永远不会返回。
在 foreach
之后添加一个return false
,如下所示:
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;
}
你需要在foreach之外返回。
如果 CheckForChild
方法中的 groups
参数为空,则没有 return 语句。
要么在foreach
循环后返回布尔值,要么引发异常。
您的checkForChild
方法应该在循环后返回一些内容。如果你不这样做,并且groups
中没有FormTemplateGroup
,编译器将不知道要返回什么。