gpt4 book ai didi

c# - 在扩展方法中使用 'yield' 运算符是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 12:18:09 27 4
gpt4 key购买 nike

在扩展方法中使用 yield 运算符是线程安全的吗?

例如:

public static IEnumerable<CartItem> GetItems( this Cart cart )
{
{
while( cart.hasNext() )
yield return cart.GetNextItem( );
}
}

最佳答案

我不太确定你的意思,但 yield return 实质上会导致函数生成状态机包装类并返回该类的实例。每个 yield 返回都是状态机的返回。调用您的方法返回的单个实例不是线程安全的(您不能从多个线程同时迭代它),但多个调用会生成单独的实例。这些单独的实例可以由多个线程使用,在这种情况下,线程安全性由枚举器使用的类的线程安全性决定(cart 的方法,在您的情况下。)

关于c# - 在扩展方法中使用 'yield' 运算符是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702516/

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