加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ‘yield return’语句不能出现在try / catch块约束中

发布时间:2020-12-16 00:01:00 所属栏目:百科 来源:网络整理
导读:参见英文答案 Why can’t yield return appear inside a try block with a catch?????????????????????????????????????5个 这两种方法几乎相同,但第一种方法无法编译.我无法弄清楚这种约束存在的原因 /// summary /// Dynamically loads all document extra
参见英文答案 > Why can’t yield return appear inside a try block with a catch?????????????????????????????????????5个
这两种方法几乎相同,但第一种方法无法编译.我无法弄清楚这种约束存在的原因

/// <summary>
    /// Dynamically loads all document extractors from implementation assemblies into an enumeration
    /// </summary>
    private static IEnumerable<IDocumentExtractor> EnumerateInstances()
    {
        IEnumerable<Type> types = EnumerateTypes();

        foreach(Type type in types)
        {
            try
            {
                IDocumentExtractor extractor = Activator.CreateInstance(type) as IDocumentExtractor;
                yield return extractor;
            }
            catch
            {
                _log.WarnFormat("Type {0} couldn't be instanced.",type.Name);
            }
        }
    }

并且实际编译的版本没有问题:

/// <summary>
    /// Dynamically loads all document extractors from implementation assemblies into an enumeration
    /// </summary>
    private static IEnumerable<IDocumentExtractor> EnumerateInstances()
    {
        IEnumerable<Type> types = EnumerateTypes();

        foreach (Type type in types)
        {
            IDocumentExtractor extractor = null;
            try
            {
                extractor = Activator.CreateInstance(type) as IDocumentExtractor;
            }
            catch
            {
                _log.WarnFormat("Type {0} couldn't be instanced.",type.Name);
            }

            if (extractor != null)
                yield return extractor;
        }
    }

解决方法

您可以在Eric Lippert的Iterator Blocks系列中找到这个问题的答案.具体来看看标题为 Iterator Blocks,Part Five: Push vs Pull的帖子.七部分系列从 Iterator Blocks,Part One开始.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读