有人可以解释为什么我得到以下编译错误? BlockingCollection<T>
实现List<T>
接口,其他接口没有问题。为什么要求明确演员,以及为什么我不必为'System.Collections.Concurrent.BlockingCollection<string>'
做同样的事?
无法将
'System.Collections.Generic.IReadOnlyCollection<string>'
类型隐式转换为IReadOnlyCollection<string> roListItems = new List<string>(); // ok (baseline check) IEnumerable<string> enumBCItems = new BlockingCollection<string>(); // ok System.Collections.ICollection colBCItems = new BlockingCollection<string>(); // ok IReadOnlyCollection<string> roBCItems = new BlockingCollection<string>(); // fail IReadOnlyCollection<string> roExplicitBCItems = (IReadOnlyCollection<string>)new BlockingCollection<string>(); // ok....
。存在显式转换(您是否错过了演员?)
// Type: System.Collections.Concurrent.BlockingCollection`1
// Assembly: System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: BD5F7037-65C4-4C44-8FBC-F45D80D7550F
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.dll
public class BlockingCollection<T> : IEnumerable<T>, IEnumerable, ICollection, IDisposable, IReadOnlyCollection<T>
{ ... }
修改
以下是resharper向我展示的内容,当我查看声明时,因此我的困惑。
$em->persist($student)
答案 0 :(得分:6)
它没有在.NET 4中实现该接口。
public class BlockingCollection<T> : IEnumerable<T>, ICollection, IEnumerable, IDisposable
https://msdn.microsoft.com/en-us/library/dd267312(v=vs.100).aspx