草庐IT

list_container

全部标签

c# - 在 c# Parallel.ForEach 中的 List.Add() 上出现 "Index out of bounds"错误

这是代码Listsomething=newList();Parallel.ForEach(anotherList,r=>{..dosomeworksomething.Add(somedata);});Indexoutofbounds错误大约每百次运行1次。有没有办法防止由线程引起的冲突(我假设)? 最佳答案 为了防止出现此问题,您可以使用ConcurrentQueue而不是List或并行部分中的类似并发集合。并行任务完成后,您可以将其放入List中。.有关详细信息,请查看System.Collections.Concurrent命名

c# - List<T>.Contains() 如何找到匹配项?

我有一个汽车对象列表Listcars=GetMyListOfCars();我想看看列表中是否有汽车if(cars.Contains(myCar)){}Contains使用什么来确定myCar是否在列表中。它是否对我的汽车对象执行“ToString()”。它是否使用Equals()方法,即gethashcode()?我知道我可以传递我自己的IEqualityComparer来强制我自己的实现,但只是想了解它默认情况下的作用。 最佳答案 直接来自MSDN-List.Contains:Thismethoddeterminesequalit

c# - 将填充的 List<BaseClass> 转换为 List<ChildClass>

我有一个List里面有成员。我想将列表(及其所有成员)转换为类型List,其中ChildClass继承BaseClass.我知道我可以通过foreach获得相同的结果:ListChildClassList=newList();foreach(variteminBaseClassList){ChildClassList.Add(itemasChildClass);}但是有没有更简洁的方法呢?注意-这是在WP7平台上完成的。 最佳答案 如果你真的确定所有元素都是可类型转换的,你可以这样做:ChildClassList=BaseClass

c# - 为什么 Contains 比较对象与 == 不同?

Objectt=4;Objects=4;if(t==s){//false}Listq=newList(){t};Booleanfound=q.Contains(s);//found=true!在上面的代码中,我对t==s返回false并不感到意外;它正在比较对两个对象的引用,并且引用不相同。但令我惊讶的是Contains正在返回true;显然它不只是比较对象引用..它就像是在比较4和4的未装箱值..但是它如何以及为什么知道拆箱对象以进行比较?我试图理解这里发挥作用的更大原则。 最佳答案 表达式q.Contains(s)正在寻找q的元

c# - 如何将 DataSource 转换为 List<T>?

我有以下在DataGridView上加载产品的方法privatevoidLoadProducts(Listproducts){Source.DataSource=products;//SourceisBindingSourceProductsDataGrid.DataSource=Source;}现在我正试图将它们还给我以保存它们,如下所示。privatevoidSaveAll(){Repositoryrepository=Repository.Instance;Listproducts=(List)Source.DataSource;Console.WriteLine("Estees

c# - 如何并行启动 List<Task>?

我有一个返回System.Threading.Tasks.Task的对象:publicclassMyClass{publicTaskGetTask(objectstate,CancellationTokencancellationToken){returnnewTask(Execute,state,cancellationToken);}publicvoidExecute(objectcontext){//dostuff}}在其他地方我有一个List,所以我执行以下操作以获得List:varmyTaskList=myClassList.Select(p=>p.GetTask(null,

c# - 'System.Collections.Generic.List<float >' does not contain a definition for ' Sum'

我正在尝试使用内置的Sum()函数对float列表求和,但我不断收到此错误:ErrorCS1061:'System.Collections.Generic.List'doesnotcontainadefinitionfor'Sum'andnoextensionmethod'Sum'acceptingafirstargumentoftype'System.Collections.Generic.List'couldbefound(areyoumissingausingdirectiveoranassemblyreference?)(CS1061)我有usingSystem.Collect

c# - 无法将类型 '.List<AnonymousType#1>' 隐式转换为 '.List<WebApplication2.Customer>'

在以下返回列表的代码中:publicListGeAllCust(){varresults=db.Customers.Select(x=>new{x.CustName,x.CustEmail,x.CustAddress,x.CustContactNo}).ToList()returnresults;}我收到C#无法转换列表的错误报告:Error:CannotimplicitlyconverttypeSystem.Collections.Generic.ListtoSystem.Collections.Generic.List这是为什么?下面的屏幕截图显示了VisualStudio在错误的

c# - 当 T 是结构时,List<T>.Find 如何工作?

我有一个List>.我需要按照以下方式做一些事情list.Find(x=>x.Key=="foobar")但是,如果列表中不存在,行为会是什么?通常它会返回null,但结构不能为null。 最佳答案 我的建议是对不可为null的类型使用FindIndexintindex=list.FindIndex(x=>x.Key=="foobar");if(index>=0){//found!UseResult(list[index]);}如果Find()不成功,返回默认值default(T)。对于不可空类型,此结果无法与具有默认值的常规条目区

c# - 复杂的 "Contains"字符串比较

我正在开发一个C#4.5应用程序,我需要一个函数来返回true以进行以下比较:"blaLéOnArd/obla".ComplexContains("leonardo")换句话说,我需要string.Compare(str1,str2,CultureInfo.InvariantCulture,CompareOptions.IgnoreCase|CompareOptions.IgnoreSymbols|CompareOptions.IgnoreNonSpace)来检查“包含!”有人能帮忙吗? 最佳答案 您可以使用适当的CompareIn