方法'x'不能从Parallel.ForEach的用法中推断出来
本文关键字:用法 推断出 不能 方法 Parallel ForEach | 更新日期: 2023-09-27 18:08:26
我第一次尝试使用"where T:"构造,并且在尝试使用Parallel.ForEach时出现错误。
"方法'System.Threading.Tasks.Parallel.ForEach(System.Collections.Concurrent.) '的类型参数。OrderablePartitioner, System.Action)'不能从用法中推断出来。"
我明白为什么错误发生,但不知道如何修复它。Data是一个简单的类,只有两个属性。
namespace Test
{
internal class UnOrderedBuffer<T> where T : class
{
ConcurrentBag<T> GenericBag = new ConcurrentBag<T>();
}
}
namespace Test
{
internal class Tester
{
private UnOrderedBuffer<Data> TestBuffer;
public void Update()
{
Parallel.ForEach(TestBuffer, Item =>
{
//do stuff
});
}
}
}
Parallel.ForEach
的第一个参数应该是IEnumerable<T>
, Partitioner<T>
或类似的东西。您的UnOrderedBuffer
类不能转换为所涉及的任何参数类型。如果你让它实现IEnumerable<T>
或类似的东西,那么它就会工作。
这不是关于类型参数或泛型约束的问题,而是关于你的类没有实现正确的接口或扩展一个合适的类。