gpt4 book ai didi

C# 到 VB .NET yield 返回转换

转载 作者:行者123 更新时间:2023-11-30 13:21:21 26 4
gpt4 key购买 nike

这段代码在 VB .NET 中的翻译是什么?

public static IEnumerable<TSource> Where<TSource>(
this IEnumerable<TSource> source,
Func<TSource, Boolean> predicate)
{
foreach (TSource element in source)
{
if (predicate(element))
yield return element;
}
}

最佳答案

这里的问题不是转换扩展方法——它是转换迭代器 block (该方法使用 yield return。VB 没有任何等效的语言结构——你必须创建自己的 IEnumerable<T> 实现进行过滤,然后从扩展方法返回该类的实例。

这正是 C# 编译器所做的,但它隐藏在幕后。

有一点需要注意,否则可能不明显:IEnumerator<T>工具 IDisposable , 和一个 foreach loop 在最后处理迭代器。这可能非常重要 - 因此,如果您确实创建了自己的实现(坦率地说,我建议您不要这样做),您将需要调用 Dispose在从 source.GetEnumerator() 返回的迭代器上在你自己的Dispose方法。

关于C# 到 VB .NET yield 返回转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145214/

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