草庐IT

while循环

全部标签

c# - JIT 和循环优化

usingSystem;namespaceConsoleApplication1{classTestMath{staticvoidMain(){doubleres=0.0;for(inti=0;i通过针对c++版本对这段代码进行基准测试,我发现性能比c++版本慢10倍。我对此没有问题,但这让我想到了以下问题:似乎(经过几次搜索)JIT编译器无法像C++编译器那样优化此代码,即只调用一次sqrt并在其上应用*1000000。有没有办法强制JIT去做? 最佳答案 我重现,C++版本的时钟为1.2毫秒,C#版本的时钟为12.2毫秒。如果您

c# - 如何使用 LINQ 来避免嵌套循环?

我一直在阅读有关LINQtoObjects的文章,现在我的同事希望我向他们展示它。现在,我对运算符和语法选择有了一定的了解,但我听说您可以使用LINQ避免繁重的嵌套循环。不过,我很难想出一组很好的“之前和之后”代码list来证明这一点。我在Magennis的书中找到了使用和不使用LINQ进行排序和分组的一个很好的例子,他还有一个编写xml的例子。但是那些嵌套循环呢?考虑到我们通常需要一个或两个foreach循环来遍历查询结果,这甚至是一个现实的说法吗?如果有人能向我解释这个想法(最好有具体的例子),我将不胜感激。 最佳答案 假设您有

c# - 对于从星期一开始的 DayOfWeek 枚举的每个循环?

我正在像这样遍历DayOfWeek枚举:foreach(DayOfWeekdayinEnum.GetValues(typeof(DayOfWeek))){//Addstufftoalist}我的问题是我希望我的枚举在星期一而不是星期日开始。我试过:CultureInfoci=Thread.CurrentThread.CurrentCulture;ci.DateTimeFormat.FirstDayOfWeek=DayOfWeek.Monday;但是foreach循环仍然从星期日开始。我该怎么做?我最后的想法是将结果列表重新排序为我想要的日期顺序但这将意味着更多的迭代。谢谢!

c# - 在单元测试中循环

我们可以在单元测试中有一个循环吗?我的方法返回一个IEnumerable,我想对IEnumerable所在的逻辑进行单元测试被build。基本上我想测试IEnumerable中元素的数量符合预期。我想不出另一种方法来测试内部IEnumerable没有循环语句。如果这是一个好的做法,请告诉我。 最佳答案 没有技术原因您不能这样做。一个单元测试中可以有多个Assert语句。在循环中使用Assert语句只是在测试中使用多个Assert语句的简写方式。但是,有些人认为单元测试中应该只有一个Assert语句。我个人不同意-我认为测试应该测试一

c# - 在 C# 中循环遍历 json 数组

我有一个像这样的json字符串,{"objectType":"Subscriber","objectList":[{"firstName":"name1","email":"email@example.com","address":"exampleAddress"},{"firstName":"name2","email":"email2@example.com","address":"exampleAddress2"}]}我需要在我的C#代码中解析它。我试过了,JavaScriptSerializerjson_serializer=newJavaScriptSerializer();

c# - 向 Windows 窗体消息循环发送或发布消息

我有一个从命名管道读取消息的线程。这是一个阻塞读取,这就是为什么它在自己的线程中。当此线程读取消息时,我希望它通知在主线程中运行的Windows窗体消息循环消息已准备就绪。我怎样才能做到这一点?在win32中我会做一个PostMessage,但是.Net中似乎不存在该函数(或者至少我找不到它)。 最佳答案 在WinForms中,您可以使用Control.BeginInvoke实现此目的.一个例子:publicclassSomethingReadyNotifier{privatereadonlyControlsynchronizer=

c# - 无法连接到 VS2012 中的 localDB – "A network-related or instance-specific error occurred while establishing a connection to SQL Server..."

这很奇怪,因为我能够使用相同的连接字符串通过SSMS2008R2连接到localDB("DataSource=(LocalDB)\v11.0;IntegratedSecurity=true")只有C#代码无法连接,我尝试使用ConnectTimeout=60增加登录时间,但没有成功。我还尝试指定数据库InitialCatalog=其中是我通过ssms在localdb上创建的。关于为什么没有连接的任何指示? 最佳答案 有没有可能是因为您忘记对反斜杠进行两次转义?你试过这个吗:"DataSource=(LocalDB)\\v11.0;I

c# - IEnumerable 是否需要使用 foreach 循环?

这个问题在这里已经有了答案:DoesClassneedtoimplementIEnumerabletouseForeach(11个答案)关闭9年前。我想知道,我到底什么时候可以使用foreach循环?我必须实现IEnumerable吗?

c# - 用循环处理一个列表,每次取100个元素,列表末尾自动小于100

有没有一种方法可以使用一个循环来获取大列表中的前100个项目,对它们做一些处理,然后再处理下一个100个等等,但是当它接近尾声时,它会自动缩短项目的“100”步骤剩余。目前我必须使用两个if循环:for(inti=0;i有更好的方法吗?如果不是,我至少会让“东西”成为一个函数,这样代码就不必复制两次。 最佳答案 您可以使用LINQSkip和Take你的代码会更干净。for(inti=0;i注意:如果元素少于100个,Take会给你剩下的。 关于c#-用循环处理一个列表,每次取100个元素

c# - Foreach 循环 XmlNodeList

目前我有以下代码:XmlDocumentxDoc=newXmlDocument();xDoc.Load("http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=twitter");XmlNodeListtweets=xDoc.GetElementsByTagName("text");foreach(intiintweets){if(tweets[i].InnerText.Length>0){MessageBox.Show(tweets[i].InnerText);}}这不起作用,它在foreach行上给我Syst