草庐IT

parallel-collections

全部标签

c# - 无法将 List<T> 隐式转换为 Collection<T>

这是一个编译器错误(为了便于阅读而略有更改)。这个问题一直困扰着我。FxCop告诉我们返回List是一件坏事和派生自Collection的类作为返回类型应该更可取。此外,FxCop表示可以使用List用于内部数据存储/操作。好的,我明白了,但我不明白为什么编译器提示试图隐式转换List至Collection.不是List更多界面收费和功能?为什么禁止隐式转换?还有另一个问题来自上面:是newList(somecollection)构造函数贵吗? 最佳答案 为什么不只执行以下操作:Collectioncollection=newCol

c# - Collection.Contains() 使用什么来检查现有对象?

我有一个自定义对象的强类型列表,MyObject,它有一个属性Id,以及其他一些属性。假设Id的MyObject将其定义为唯一,我想检查我的收藏是否还没有MyObject具有Id的对象在我添加新的MyObject之前为1到集合。我想使用if(!List.Contains(myObj)),但我如何强制执行MyObject的只有一个或两个属性这一事实将其定义为唯一?我可以使用IComparable?或者我只需要重写Equals方法?如果是这样,我需要先继承一些东西,对吗? 最佳答案 List.Contains使用EqualityComp

c# - Collection.Contains() 使用什么来检查现有对象?

我有一个自定义对象的强类型列表,MyObject,它有一个属性Id,以及其他一些属性。假设Id的MyObject将其定义为唯一,我想检查我的收藏是否还没有MyObject具有Id的对象在我添加新的MyObject之前为1到集合。我想使用if(!List.Contains(myObj)),但我如何强制执行MyObject的只有一个或两个属性这一事实将其定义为唯一?我可以使用IComparable?或者我只需要重写Equals方法?如果是这样,我需要先继承一些东西,对吗? 最佳答案 List.Contains使用EqualityComp

c# - 如何从 Parallel.ForEach 收集返回值?

我正在并行调用一个慢速网络服务。一切都很好,直到我意识到我需要从服务中获取一些信息。但我不知道从哪里找回值(value)。我无法写入数据库,在使用Parallel.ForEach调用的方法中,HttpContext.Current似乎为空下面是一个示例程序(在你的脑海中,请想象一个慢速的网络服务而不是字符串连接)usingSystem;usingSystem.Threading.Tasks;classProgram{staticvoidMain(string[]args){WordMakerm=newWordMaker();m.MakeIt();}publicclassWordMake

c# - 如何从 Parallel.ForEach 收集返回值?

我正在并行调用一个慢速网络服务。一切都很好,直到我意识到我需要从服务中获取一些信息。但我不知道从哪里找回值(value)。我无法写入数据库,在使用Parallel.ForEach调用的方法中,HttpContext.Current似乎为空下面是一个示例程序(在你的脑海中,请想象一个慢速的网络服务而不是字符串连接)usingSystem;usingSystem.Threading.Tasks;classProgram{staticvoidMain(string[]args){WordMakerm=newWordMaker();m.MakeIt();}publicclassWordMake

c# - 为什么 BCL Collections 使用结构体枚举器,而不是类?

我们都知道mutablestructsareevil一般来说。我也很确定,因为IEnumerable.GetEnumerator()返回类型IEnumerator,这些结构会立即装入引用类型,这比它们一开始只是引用类型的成本更高。那么,为什么在BCL泛型集合中,所有枚举器都是可变结构?当然必须有一个很好的理由。我唯一想到的是可以轻松复制结构,从而在任意点保留枚举器状态。但是添加一个Copy()IEnumerator的方法接口(interface)本来就不那么麻烦,所以我不认为这本身就是一个合乎逻辑的理由。即使我不同意设计决定,我也希望能够理解其背后的原因。

c# - 为什么 BCL Collections 使用结构体枚举器,而不是类?

我们都知道mutablestructsareevil一般来说。我也很确定,因为IEnumerable.GetEnumerator()返回类型IEnumerator,这些结构会立即装入引用类型,这比它们一开始只是引用类型的成本更高。那么,为什么在BCL泛型集合中,所有枚举器都是可变结构?当然必须有一个很好的理由。我唯一想到的是可以轻松复制结构,从而在任意点保留枚举器状态。但是添加一个Copy()IEnumerator的方法接口(interface)本来就不那么麻烦,所以我不认为这本身就是一个合乎逻辑的理由。即使我不同意设计决定,我也希望能够理解其背后的原因。

c# - System.Collections.Generic.List 不包含 'Select' 的定义

这个问题在这里已经有了答案:System.Collections.Generic.IEnumerable'doesnotcontainanydefinitionfor'ToList'(5个答案)关闭2年前。这个错误发生在我的“Views”文件夹中的许多文件中:'System.Collection.GenericList'doesnotcontainadefinitionfor'Select'acceptingafirstargumentoftype'System.Collections.GenericList'couldbefound(areyoumissingausingdirect

c# - System.Collections.Generic.List 不包含 'Select' 的定义

这个问题在这里已经有了答案:System.Collections.Generic.IEnumerable'doesnotcontainanydefinitionfor'ToList'(5个答案)关闭2年前。这个错误发生在我的“Views”文件夹中的许多文件中:'System.Collection.GenericList'doesnotcontainadefinitionfor'Select'acceptingafirstargumentoftype'System.Collections.GenericList'couldbefound(areyoumissingausingdirect

c# - 打破 parallel.foreach?

我如何突破parallel.for循环?我有一个非常复杂的语句,如下所示:Parallel.ForEach(ColorIndex.AsEnumerable(),newAction((ColorIndexHolderElement)=>{if(Element.StartIndex=I){Found=true;break;}}));使用并行类,我可以优化这个过程。然而;我不知道如何打破并行循环?break;语句抛出以下语法错误:Noenclosingloopsoutofwhichtobreakorcontinue 最佳答案 使用Para