为什么“return”和“yield return”不能在同一个方法中使用?

2024-01-12

为什么我们不能在同一个方法中同时使用return 和yield return 呢?

例如,我们可以有下面的 GetIntegers1 和 GetIntegers2,但不能有 GetIntegers3。

public IEnumerable<int> GetIntegers1()
{
  return new[] { 4, 5, 6 };
}

public IEnumerable<int> GetIntegers2()
{
  yield return 1;
  yield return 2;
  yield return 3;
}

public IEnumerable<int> GetIntegers3()
{
  if ( someCondition )
  {
    return new[] {4, 5, 6}; // compiler error
  }
  else
  {
    yield return 1;
    yield return 2;
    yield return 3;
  }
}

return很渴望。它立即返回整个结果集。yield return构建一个枚举器。当您使用时,C# 编译器会在幕后为枚举器发出必要的类yield return。编译器不会查找运行时条件,例如if ( someCondition )当确定它是否应该发出可枚举的代码或具有返回简单数组的方法时。它检测到在您的方法中您正在使用这两种方法,这是不可能的,因为他无法发出枚举器的代码,同时又让该方法返回一个普通数组,而所有这些都适用于同一个方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么“return”和“yield return”不能在同一个方法中使用? 的相关文章

  • 如何在MVVM中管理多个窗口

    我知道有几个与此类似的问题 但我还没有找到明确的答案 我正在尝试深入研究 MVVM 并尽可能保持纯粹 但不确定如何在坚持模式的同时启动 关闭窗口 我最初的想法是向 ViewModel 发送数据绑定命令 触发代码来启动一个新视图 然后通过 X
  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • 未解决的包含:“cocos2d.h” - Cocos2dx

    当我在 Eclipse 中导入 cocos2dx android 项目时 我的头文件上收到此警告 Unresolved inclusion cocos2d h 为什么是这样 它实际上困扰着我 该项目可以正确编译并运行 但我希望这种情况消失
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问

随机推荐

  • AVX 4 位整数

    我需要执行以下操作 w i scale v i point 比例和点是固定的 而v 是 4 位整数的向量 我需要计算w 对于任意输入向量v 我想使用 AVX 内在函数来加速这个过程 然而 v i 是 4 位整数的向量 问题是如何使用内在函数
  • 带有选项字段的 Django value_list

    The values list在过滤对象中 在 django 视图中提供解决方案确实对我有很大帮助 我的代码如下所示 并且这个有效 values list ac realdata objects filter product 1 value
  • XMPP:AngularJs + Strope.js

    我有一个在 strope js 上工作的基本 XMPP 客户端 登录时我创建处理程序 例如 connect new Strophe Connection http localhost http bind connect addHandler
  • Scala 中如何处理类型名称冲突?

    我正在写一个从Scanners这迫使我定义类型Token object MyScanner extends Scanners type Token 问题是我的令牌类本身被称为Token abstract class Token case c
  • 从容器内获取 docker 网络的私有 IP 来配置 xdebug remote_host

    因此 使用 docker 和 docker compose 我喜欢提供内置于容器中的工具 这样开发团队中的其他人就不必为设置而苦苦挣扎 在这种特定情况下 我在配置 xdebug 时遇到问题 从浏览器调试时使用回连功能绝对可以正常工作 但是尝
  • Python从父包导入

    我在 Python 中导入时遇到了一些问题 这是一个简单的例子来说明问题所在 我有一个这样的目录结构 app init py sub app init py 代码 应用程序 init py shared data data 123 from
  • 自定义 docker 容器 bash

    我尝试为 Docker 容器 bash 提示设置自定义配置 以在连接时显示 git 分支名称 我找到了一切可以正确执行的方法 但我无法执行 profile甚至 bash profile容器建筑物中的文件 如果我表演source profil
  • HTML5 中的注册机标签

    所以我在 HTML5 中遇到了这个新标签
  • 为什么我的对象不会死?

    我正在尝试实现一种机制 当保存缓存文件的对象死亡时 该机制会删除缓存文件 并决定使用PhantomReference获取有关对象垃圾回收的通知 问题是我一直遇到奇怪的行为ReferenceQueue 当我更改代码中的某些内容时 它突然不再获
  • ffmpeg:哪些文件格式支持标准输入使用?

    我知道 ffmpeg 能够读取数据stdin而不是使用从磁盘读取ffmpeg i 所有文件格式都支持吗 如果不是 是否有支持的文件格式列表 你需要跑ffmpeg protocols以确定是否pipe您的 ffmpeg 版本支持的协议 从标准
  • 调整图像大小并居中裁剪图像

    所以目前我正在尝试裁剪图片并调整其大小以使其适合特定尺寸而不丢失比例 一张小图来展示我的意思 我玩了一下vocaro 的类别 http vocaro com trevor blog 2009 10 12 resize a uiimage t
  • 使用 Rails 3.1,您将“页面特定”JavaScript 代码放在哪里?

    据我了解 所有 JavaScript 都会合并到 1 个文件中 Rails 在添加时默认执行此操作 require tree 到你的底部application js清单文件 这听起来像是一个真正的救星 但我有点担心特定于页面的 JavaSc
  • PayPal IPN 回发失败

    我最近将我的 Magento live 网站从 1 6 2 0 升级到 1 7 0 0 升级后开始 我现在在 PayPal 标准付款中遇到问题 当客户使用 PayPal 付款时 PayPal 上的付款会顺利进行 但 Magento 订单状态
  • Python 判断类是否为抽象(ABC)而不使用abstractmethod

    我有一个继承自的类ABC https docs python org 3 library abc html abc ABC 并且没有任何abstractmethod 我想检查它是否是一个抽象类 目前我很困惑 确定 Python 类是抽象基类
  • 当 C++ 引用离开其范围时会发生什么?

    如果我正确解释 C 引用 它们就像指针 但具有保证的数据完整性 没有 NULL 没有 int 0x12345 但是当引用对象的范围被保留时会发生什么 如果没有涉及魔法 可能不是 引用的对象将在我背后被销毁 我写了一段代码来检查这一点 inc
  • 致命错误:调用未定义的方法 mysqli_stmt::fetch_array() [重复]

    这个问题在这里已经有答案了 在此代码中 我收到错误 致命错误 调用未定义的方法 mysqli stmt fetch array 问题是什么 search player sql db gt prepare select job from jo
  • make 总是重建 Makefile 目标

    我重新设计了大部分Makefile我的论文项目的文件 以便正确反映工作流程 为项目子目录中目标之间的依赖关系创建 make 规则 https stackoverflow com questions 23910056 creating mak
  • 在finally块中将对象引用设置为null

    public void testFinally System out println setOne toString protected StringBuilder setOne StringBuilder builder new Stri
  • 使用 pandas 读取 CSV 日期会返回日期时间而不是时间戳

    问题描述 我正在尝试将历史股票价格从 CSV 格式读取到 pandas Dataframe 中 但到目前为止我注意到一件有趣的事情 当读取某些行号时 日期列类型从pandas Timestamp into datetime 这是如何运作的
  • 为什么“return”和“yield return”不能在同一个方法中使用?

    为什么我们不能在同一个方法中同时使用return 和yield return 呢 例如 我们可以有下面的 GetIntegers1 和 GetIntegers2 但不能有 GetIntegers3 public IEnumerable