我设计了以下测试:
var arrayLength=5000;
object[] objArray=new object[arrayLength];
for(var x=0;x<arrayLength;x++)
{
objArray[x]=new object();
}
objArray[4000]=null;
const int TestSize=int.MaxValue;
System.Diagnostics.Stopwatch v= new Stopwatch();
v.Start();
for(var x=0;x<10000;x++)
{
objArray.Contains(null);
}
v.Stop();
objArray.Contains(null).Dump();
v.Elapsed.ToString().Dump("Contains");
//Any ==
v.Reset();
v.Start();
for(var x=0;x<10000;x++)
{
objArray.Any(o=>o==null);
}
v.Stop();
objArray.Any(x=>x==null).Dump();
v.Elapsed.ToString().Dump("Any");
//Any Equals
v.Reset();
v.Start();
for(var x=0;x<10000;x++)
{
objArray.Any(obj=>object.Equals( obj,null));
}
v.Stop();
objArray.Any(obj=>object.Equals( obj,null)).Dump();
v.Elapsed.ToString().Dump("Any");
Run Code Online (Sandbox Code Playgroud)
null不存在时的结果:
Contains False 00:00:00.0606484Any == False 00:00:00.7532898Any object.Equals False 00:00:00.8431783当元素4000存在null时:
Contains True 00:00:00.0494515Any == True 00:00:00.5929247Any object.Equals True 00:00:00.6700742当元素10出现null时: …
我正在查看BackgroundWorker.ReportProgress方法.它可以采用1个参数(int)或两个参数(int,object).
如果我想像这样分配ReportProgress:
var ReportProgressMethod = backgroundWorker.ReportProgress;
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说有一个模糊的引用,因为(当然)该方法可以采取参数集.
如何更改上述语句以表示我想使用int, object该方法的版本.
(这背后的想法是我想将ReportProgressMethod作为参数传递给方法.)