草庐IT

c# - 选择投影中的索引

在执行以下操作时,我希望我的索引从大于0的数字开始:vardataSource=WebConfigurationHelper.GetSupportedDomainsString().Select((domain,index)=>new{index,Name=domain});所以我的输出变成:index=2domain=zombielandindex=3domain=mydomain可以吗? 最佳答案 您可以在选择投影中调整它:vardataSource=WebConfigurationHelper.GetSupportedDoma

c# - 从列表中删除项目并同时获取项目

在C#中,我试图从随机索引的列表中获取一个项目。检索到它后,我希望将其删除,以便不再选择它。好像我需要很多操作才能做到这一点,难道没有一个功能可以让我简单地从列表中提取一个项目吗?RemoveAt(index)函数无效。我想要一个有返回值的。我在做什么:ListnumLst=newList();numLst.Add(1);numLst.Add(2);do{intindex=rand.Next(numLst.Count);intextracted=numLst[index];//dosomethingwithextractedvalue...numLst.removeAt(index);

c# - 在单个 C# 泛型方法中返回 nullable 和 null?

是否可以在C#泛型方法中返回对象类型或Nullable类型?例如,如果我有一个List的安全索引访问器我想返回一个值,以后可以用==null检查或.HasValue().我目前有以下两种方法:staticT?SafeGet(Listlist,intindex)whereT:struct{if(list==null||index=list.Count){returnnull;}returnlist[index];}staticTSafeGetObj(Listlist,intindex)whereT:class{if(list==null||index=list.Count){return

c# - 读写二进制文件的最快方法

我目前正在优化一个应用程序,经常进行的操作之一是读写二进制文件。我需要两种类型的函数:Set(byte[]target,intindex,intvalue);intGet(byte[]source,intindex);按大端和小端顺序处理有符号和无符号的short、int和long需要这些函数。下面是我做的一些例子,但我需要评估一下优缺点:第一种方法是使用Marshal将值写入byte[]的内存,第二种方法是使用普通指针来完成此操作,第三种方法是使用BitConverter和BlockCopy来完成此操作unsafevoidSet(byte[]target,intindex,intva

c# - 识别奇数、偶数——二进制与模数

最近我不得不为大量整数确定一个数是奇数还是偶数。我想到了一个想法,通过将数字与1进行AND运算并将结果与​​1进行比较来将数字识别为奇数或偶数x&1==1//evenorodd我从未在实践中见过这种实现。您经常看到的最常见方式是:x%2==0我决定对这两种方法进行一些性能检查,二进制方法在我的机器上似乎稍快一些。intsize=60000000;ListnumberList=newList();Randomrnd=newRandom();for(intindex=0;index有没有人看过二进制方法的实现?有什么缺点吗? 最佳答案

c# - 在排序数组中找到小于 x 的最大值

假设我有一个排序的整数数组int[],我想搜索最接近某个输入数字的较小值。例如,如果数组包含(1),(23),(57),(59),(120)并且输入为109,则输出应为59。我只是想看看建议并与我已有的方法进行比较。 最佳答案 使用Array.BinarySearch.如果输入在列表中,它将返回索引,如果不在列表中,则返回第一个较大值的索引的补码。您只需反转结果并减去一个以获得最接近的较小值的索引。int[]arr={1,23,57,59,120};intindex=Array.BinarySearch(arr,109);if(in

c# - 从 C# List<T> 中删除项目是否会保留其他项目的订单?

最近,我写了很多看起来像这样的代码:ListmyList=newList();...for(inti=0;i我只是变得有点偏执,也许List在删除时不保留对象顺序。我不太了解C#规范,无法确定。有人可以验证我是不是在找这种模式的麻烦吗?编辑:也许我应该澄清一下,上面是一个非常简化的例子,如果需要删除该项目会发生更多事情,所以我不认为List.RemoveAll()在这里非常适用。虽然这是一个很好的功能。我在if()中添加了评论上面的block特别提到了这一点。 最佳答案 List添加、插入和删除时将始终保持相对顺序;如果没有,它就不

c# - MVC 3 区域路由不起作用

我在我的MVC3应用程序中创建了一个名为“博客”的区域。在global.asax中我有以下代码。publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default",//Routename"{controller}/{action}/{id}",//URLwithparametersnew{controller="Home",action="Index",id=UrlParameter.Optiona

c# - 为什么要在 List<T>.AddRange(IEnumerable<T>) 中添加额外的副本?

我正在查看System.Collections.Generic.List的开源代码.AddRange(IEnumerable)方法如下所示:publicvoidAddRange(IEnumerablecollection){Contract.Ensures(Count>=Contract.OldValue(Count));InsertRange(_size,collection);}和InsertRange(int,IEnumerable)方法看起来像这样:publicvoidInsertRange(intindex,IEnumerablecollection){if(collecti

c# - 堆栈和队列枚举顺序

我知道List枚举器保证枚举顺序并尊重最后的排序操作,我知道Dictionary和HashSet不,即你可以不确定Dictionarydictionary=...;foreach(varpairindictionary){}将按照附加的顺序处理对。Stack和Queue呢?他们的调查员是否保证任何顺序? 最佳答案 对于Stack,枚举目前由一个名为StackEnumerator的嵌套私有(private)类完成(这是来自ReferenceSource):privateclassStackEnumerator:IEnumerator,