草庐IT

c# - 洗牌列表<T>

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:RandomizeaListinC#我有一个列表,其中包含数以千计的音频文件位置的文件路径,我想知道“随机播放”列表的最有效方法是什么?非常感谢任何帮助:)谢谢

c# - Func<> 的 List<>,具有通用返回类型的编译错误,但为什么呢?

这个问题有点长,所以请耐心等待。我需要在一组字符串和每个字符串对应的通用方法调用之间创建一个映射。但是,我遇到了一个编译问题,下面进行了解释。在我的场景中,我使用的是Dictionary,但问题同样存在于List.为简单起见,我使用List在下面的示例中。考虑这三个类:publicabstractclassMyBase{/*bodyomitted*/}publicclassMyDerived1:MyBase{/*bodyomitted*/}publicclassMyDerived2:MyBase{/*bodyomitted*/}还有一些其他类中的方法:publicclassTest{p

c# - List<T> - 我传递的是对象还是引用?

好吧,我研究了泛型并有以下问题:Listlist=newListSomeClassMyInstance=SomeClass();list.Add(MyInstance);我不确定将添加到列表中的是什么-引用或引用类型的对象(指向MyInstance的实际值)。编辑:或者我将添加指向实际对象的值(即引用数据类型)?谢谢 最佳答案 当你处理引用类型时,你总是在处理引用,因此引用将被添加到列表中(实际上是引用的副本)。您实际上没有选择;这就是语言的工作原理。 关于c#-List-我传递的是对象

c# - 使用 Linq 除了不像我想的那样工作

List1包含项目{A,B}和List2包含项目{A,B,C}.我需要的是在使用ExceptLinq扩展时返回{C}。相反,我返回了{A,B},如果我在表达式中翻转列表,结果是{A,B,C}。我是不是误解了Except的意思?是否有其他我没有使用的扩展程序?我已经浏览并尝试了很多关于这个问题的不同帖子,但到目前为止都没有成功。varexcept=List1.Except(List2);//ThisisthelineIhavethusfar编辑:是的,我正在比较简单的对象。我从未使用过IEqualityComparer,了解它很有趣。感谢大家的帮助。问题是没有实现比较器。链接的博客文章和

c# - 如何在 C# 中进行列表理解(将列表转换为另一个列表的紧凑方式)?

在我的代码中,我经常有这样的序列:Listlist1=...;Listlist2=newList();foreach(type1l1inlist1){list2.Add(myTransformFunc(l1));}在Python中,我可以这样写list2=[myTransformFunc(l1)forl1inlist1]有没有一种用C#编写的紧凑方法? 最佳答案 varnewList=list.Select(x=>YourTransformFunc(x)).ToList();或者:varnewList=list.Select(You

c# - List ForEach 休息

有没有办法突破foreach扩展方法?“break”关键字无法将扩展方法识别为要中断的有效范围。//Doesn'tcompileEnumerable.Range(0,10).ToList().ForEach(i=>{System.Windows.MessageBox.Show(i.ToString());if(i>2)break;});编辑:从问题中删除“linq”请注意,该代码只是一个示例,显示中断在扩展方法中不起作用...我真正想要的是让用户能够中止处理列表..UI线程有一个中止变量和for当用户点击取消按钮时,循环就会中断。现在,我有一个普通的for循环,但我想看看是否可以使用扩

c# - List<T>.Remove 应该放在 List<T>.Exists 之前吗?

拥有Listpaths=newList();我想删除我不确定是否存在的项目。我应该检查它是否存在,还是直接运行Remove方法?是if(paths.Exists(stringVar))在paths.Remove(stringVar)之前需要或考虑好的做法?如果列表中没有这样的项目,则在没有Exists的情况下运行Remove将简单地返回false。 最佳答案 不,它不会抛出异常,也不需要额外的检查。见MSDN:trueifitemissuccessfullyremoved;otherwise,false.Thismethodalso

c# - C# 是通过引用还是作为副本将 List<T> 传递给方法?

这个问题在这里已经有了答案:Arearraysorlistspassedbydefaultbyreferenceinc#?(4个答案)关闭8年前。从C/C++迈出我在C#世界的第一步,所以细节有点模糊。据我所知,默认情况下,类是通过引用传递的,但是例如。列表如:voidDoStuff(Liststrs){//dostuffwiththelistofstrings}和其他地方Listsl=newList();//nextfilllistinaloopetc.andthendostuffwithit:DoStuff(sl);在这种情况下,sl是通过引用传递的还是制作的副本,以便我需要重新定

c# - 使用 LINQ 排序后获取集合中项目的新索引

我想在C#中对列表(或数组)进行排序,并希望为未排序列表中的每个项目保存新索引。即:A=231sorted(A)=123indexes=120我在Stackoverflow上读到LINQ特别有用,但我找不到具体的操作方法。 最佳答案 注意事项:我犯了一个错误,误读了OP的问题(这让我很尴尬,收到了这么多赞成票)。我希望(理想情况下)OP接受其他答案之一是正确的。为了公平对待投票者并本着SO的精神,我将修改此答案以使其正确。一个人可以携带两种扩展方法,一种用于旧索引,一种用于新索引(这是OP想要的)。publicstaticIEnum

c# - IEnumerable 中的项目不等于 List 中的项目

我只是想不通为什么找不到我筛选列表中的项目。我已经简化了这个例子来展示它。我有一个类项目...publicclassItem{publicItem(stringname){Name=name;}publicstringName{get;set;}publicoverridestringToString(){returnName;}}...和一个“项目”类,它应该过滤项目并检查第一个项目是否仍在列表中...publicclassItems{privateIEnumerable_items;publicItems(IEnumerableitems){_items=items;}public