gpt4 book ai didi

c# - 检查 IEnumerable 是否由 yield 关键字创建的正确方法

转载 作者:行者123 更新时间:2023-11-30 14:08:41 25 4
gpt4 key购买 nike

检查 IEnumerable<T> 是否正确的方法是什么?是由yield 关键字?

示例:

public IEnumerable<int> GetMeSomeInts() 
{
// Unknown implementation
}

某处:

IEnumerable<int> someInts = GetMeSomeInts() ;

if (someInts is generatedbyayield) // <- What should be this condition ?
someInts = someInts.ToList() ;

最佳答案

由 yield 关键字创建的状态机并非设计为“可检测”。如果您找到检测它的方法,您将不得不依赖一些特定于实现的提示(例如类型名称的特定模式;一些示例在您的问题的评论中给出),这些不是 C# 的一部分规范,因此可能随时更改。

因此,没有正确的方法来检查 IEnumerable<T> 是否为由 yield 关键字生成。我认为正确的 方法是不检查。这就是接口(interface)的用途:它们隐藏实现。


既然你没有提到为什么你想查明 IEnumerable 是否是由 yield 关键字生成的,我将大胆猜测并假设你实际上想问的是:

How can I materialize an IEnumerable if it has not been materialized yet?

这个问题已经回答了:

关于c# - 检查 IEnumerable<T> 是否由 yield 关键字创建的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34183713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com