【发布时间】:2019-10-25 14:53:40
【问题描述】:
问题
当我尝试在异步方法中调用我的“正常”方法时,它会被 Debugger1 忽略。
这是我的异步方法
internal async static Task<DefinitionsModel> DeserializeAsync(this string path)
{
var model = new DefinitionsModel();
var content = await File.ReadAllTextAsync(path);
model.Pages = content.GetPages();
return model;
}
这是我的“正常”方法
private static IEnumerable<PageModel> GetPages(this string content)
{
var level = 0;
var value = nameof(PageModel.Page).GetDElement<PageModel>();
var start_with_line = $"{level} {value} ";
var end_with_line = string.Concat(Enumerable.Repeat(Environment.NewLine, 2));
var expression = $@"\b{start_with_line}\S * {end_with_line}\b";
var matches = content.GetPagesFromContent(expression);
yield return new PageModel();
}
帮助图片
【问题讨论】:
-
那可能是因为您的
IEnumerable<T>结果没有被迭代/持久化。例如,您的方法在用于 foreach 循环时执行。 -
@phuzi 我的问题不在于 List vs IEnumeable ....
-
拥有一个带有单个
yield语句的方法真的很奇怪,为什么不只返回一个PageModel? -
我同意标题具有误导性,但其中的解释实际上非常有用。 @OverZer0
-
@DavidG 我的方法还没用完,我只想看看“数学集合”有哪些值