yield-return相关内容

详细说明此功能如何与&;Year&;Quot;一起工作?

我获得此方法(在Unity C#脚本中),但我不理解“Year”部分的实际工作方式。 我从MSDN得知该函数将返回一个我可以迭代的IEnumerator,但是该代码等待了1,5秒,并且没有迭代,因为这意味着在内部创建的对象被多次创建。 这里有人能给我解释一下这段代码是如何工作的吗? IEnumerator DestroyShip() { // create new gameob ..
发布时间:2022-02-21 10:01:57 C#/.NET

转换此迭代器块如何进行功能更改?

给定以下代码片段: 公共类 Foo{公共 IEnumerable序列{得到;放;}公共 IEnumerable酒吧(){foreach(序列中的字符串 s)收益回报 s;}} 下面的代码片段在语义上是等价的,还是不同的?如果不同,它们的功能有何不同? 公共类 Foo2{公共 IEnumerable序列{得到;放;}公共 IEnumerable ..
发布时间:2022-01-10 15:02:09 C#/.NET

在 C# 中使用 yield return 迭代器的目的/优势是什么?

我见过的在 C# 方法中使用 yield return x; 的所有示例都可以通过返回整个列表以相同的方式完成.在这些情况下,使用 yield return 语法与返回列表相比有什么好处或优势吗? 另外,yield return 会在哪些类型的场景中使用,而您不能只返回完整列表? 解决方案 但是如果你自己建立一个集合呢? 一般来说,迭代器可用于懒惰地生成对象序列.例如 Enum ..
发布时间:2022-01-10 14:31:04 C#/.NET

在树中使用 yield 返回元素顺序的递归

我有一个递归函数,它返回所有子树节点,给定起始根节点. private IEnumerablegetAllNodesRecursively(节点子节点){foreach(subnode.Nodes 中的节点节点)getAllNodesRecursively(节点);收益率返回子节点;} 对于以下树结构: A|+--B|+--C|||+--D|+--E 当我尝试这样迭代时: foreach ..
发布时间:2022-01-05 18:44:17 C#/.NET

这个具有“产量"的函数是如何起作用的?详细工作?

我得到了这个方法(在 Unity C# 脚本中),但我不明白“yield"部分实际上是如何工作的. 我从 MSDN 知道该函数将返回一个 IEnumerator,我可以通过它进行迭代,但是这段代码等待 1.5 秒并且不会被迭代,因为这意味着内部创建的对象被创建了多次.这里有人可以解释一下这段代码是如何工作的吗? IEnumerator DestroyShip(){//创建新的游戏对象实例化 ..
发布时间:2021-12-11 16:53:36 C#/.NET

使用 Scala 延续实现收益(收益回报)

如何使用 Scala 延续实现 C# yield return?我希望能够以相同的风格编写 Scala Iterators.this Scala news post 的评论中有刺伤,但它不起作用(尝试使用 Scala 2.8.0 测试版).相关问题中的答案表明这是可能的,但尽管我一直在玩带分隔符的延续一段时间,我似乎无法完全理解如何做到这一点. 解决方案 在我们介绍延续之前,我们需要构建一 ..
发布时间:2021-12-07 13:21:27 其他开发

如何防止我的代码产生每一帧?

我正在调用一种方法,该方法调用自身以爬过地形并创建区域.然而,当区域变大时,进程以堆栈溢出结束.通过强制代码让步并花时间它成功完成并爬行我地图中的 3 个区域.然而,我使用的方法是产生每一帧,我不知道如何让它每 100 帧产生一次,导致它完成得非常慢.这是我为可读性所做的伪代码: 公共整数定时器 = 0;无效唤醒(){StartCoroutine(crA);}公共 IEnumerator crA ..
发布时间:2021-09-14 19:34:28 C#/.NET

如何递归加载所有子记录?

我有这个Project课程: 公共类项目{public int ID {get;放;}公共诠释?ParentId {get;放;}公共列表ChildProjects {get;放;}//更多属性} 这是我加载任何给定项目的所有后代的尝试: 私有异步任务>LoadDescendantsOf(项目项目){project.ChildProjects =等待db.Projec ..
发布时间:2021-05-04 20:18:38 C#/.NET

收益回报和异常处理

我刚刚遇到了一个使用yield return方法的情况,但没有抛出我期望的ArgumentException。我在这里用最简单的类重构了这种情况: class程序 { static void Main (string [] args) { try { var listA = FooA(count:0); Console.WriteLine(“ A没有抛出异常!”); } ..
发布时间:2020-10-03 01:28:57 C#/.NET

使用协程访问Unity中的SQLite数据库

我已经在Unity中创建了一个菜单,该菜单由SQLite DB的结果填充.但是,当我创建菜单时,整个游戏在查询数据库时冻结了片刻. 为解决此问题,我试图将菜单的创建与填充数据分开(即,菜单将只说“正在加载",直到查询完成). 我一直在尝试使用yield-return协同例程来执行此操作,但是游戏仍然处于冻结状态.下面我有一些伪代码来说明我在做什么... void createMe ..
发布时间:2020-07-15 03:50:55 C#/.NET

如何使用yield return和recursion获得字母的每种组合?

我有几个类似的字符串列表,可能有几十个列表: 1: { "A", "B", "C" } 2: { "1", "2", "3" } 3: { "D", "E", "F" } 这三个仅作为示例,用户可以从几十个具有不同数量元素的相似列表中进行选择.再举一个例子,对于用户来说,这也是一个非常有效的选择: 25: { } // empty 4: { "%", "!", "$", "@" ..
发布时间:2020-07-15 03:50:48 C#/.NET

产生IDisposable资源

是否有适当的方法来利用可支配资源?返回的对象是IDisposable,但是要迭代的元素是. 这里是一个例子: public static IEnumerable Fetch(IEnumerable ids) { using (var client = new CouchbaseClient()) { yield return ids.S ..
发布时间:2020-07-15 03:50:44 C#/.NET

BinaryWriter问题-“代码在Write()方法之间添加了一些字节"

我尝试使用BinaryWriter然后使用BinaryReader编写一些代码. 当我想写时,我使用方法Write(). 但是问题在于,在两行Write方法之间出现了一个新的字节,该字节在ASCII表中为十进制31(例程24). 您可以在这张图片上看到它: 您会看到索引4(第5个字节)处的字节是ASCII十进制值31.我没有在此处插入.如您所见,第1个4个字节保留给一个数字(Int32),其 ..
发布时间:2020-07-15 03:50:41 C#/.NET