int.Parse()和Convert.Toint()之间的任何性能差异?将字符串转换为int.Parse()和Convert.ToInt32()之间的整数值有什么显着优势吗?字符串stringInt="01234";intiParse=int.Parse(stringInt);intiConvert=Convert.ToInt32(stringInt);我发现了一个关于Convert与Convert的问题,但我认为这就是区别,对吧?Convert.ToInt32在将字符串作为参数传递时在内部调用int.Parse。所以唯一的区别是额外的空检查。这是.NETReflector的代码publicstaticintToInt32(stringvalue){if(value==null){return0;}returnint.Parse(value,CultureInfo.CurrentCulture);物有所值:使用系统;使用System.Collections.Generic;使用System.Linq;使用系统文本;namespaceConsoleApplication1{classProgram{staticvoidMain(string[]args){intiterations=1000000;字符串val="01234";Console.Write("运行1:int.Parse()");日期时间开始=DateTime.Now;DoParse(迭代,val);TimeSpan持续时间=DateTime.Now-开始;Console.WriteLine("持续时间:"+duration.TotalMilliseconds.ToString()+"ms");Console.Write("运行1:Convert.ToInt32()");开始=DateTime.Now;DoConvert(迭代,val);duration=DateTime.Now-开始;Console.WriteLine("持续时间:"+duration.TotalMilliseconds.ToString()+"ms");Console.Write("运行2:int.Parse()");开始=DateTime.Now;DoParse(迭代,val);duration=DateTime.Now-开始;Console.WriteLine("持续时间:"+duration.TotalMilliseconds.ToString()+"ms");Console.Write("运行2:Convert.ToInt32()");开始=DateTime.Now;DoConvert(迭代,val);duration=DateTime.Now-开始;Console.WriteLine("持续时间:"+duration.TotalMilliseconds.ToString()+"ms");Console.Write("运行3:int.Parse()");开始=DateTime.Now;DoParse(迭代,val);duration=DateTime.Now-开始;Console.WriteLine("持续时间:"+duration.TotalMilliseconds.ToString()+"ms");Console.Write("运行3:Convert.ToInt32()");开始=DateTime.Now;DoConvert(迭代,val);duration=DateTime.Now-开始;Console.WriteLine("持续时间:"+duration.TotalMilliseconds.ToString()+"ms");控制台.ReadKey();}staticvoidDoParse(intiterations,stringval){intx;for(inti=0;i每个1,000,000次迭代的结果:Run1:int.Parse()Duration:312.5msRun1:Convert.ToInt32()Duration:328.125msRun2:int.Parse()Duration:296.875毫秒运行2:Convert.ToInt32()持续时间:312.5毫秒运行3:int.Parse()Duration:312.5msRun3:Convert.ToInt32()Duration:312.5ms区别在于两者处理NULL值的方式Convert.ToInt32在遇到NULL值时返回0值。另一方面,Parse更敏感,需要一个有效值。所以当你传入NULL时会抛出异常。有关详细信息,请参阅此讨论Convert.ToInt32不会经常抛出(如果stringInt==null它返回0而不是抛出异常),但由于它在内部调用int.Parse之前进行了一些额外的检查,所以有一点开销.我写了下面的代码,结果是int.parse比convert.toint32慢。staticvoidMain(string[]args){Console.WriteLine(TimeConvertTo());Console.WriteLine(TimeParse());}staticTimeSpanTimeConvertTo(){TimeSpanstart=DateTime.Now.TimeOfDay;for(inti=0;i其他人提到了一些性能影响。如果你看一下本站的测试代码和性能统计:_以上是C#学习教程:int之间的任何性能差异。全部内容,如果有用的话给你,你需要了解更多C#学习教程,希望你多多关注---y=0;//转换的结果数//循环遍历字符串中的每个字符,求和值对于最后的数字for(inti=0;i本文采集自网络,不代表立场,如涉及侵权,请点击右下角联系管理员删除。如需转载,请注明出处:
