在这个例子中,我想在方法中添加.loop({quantity},{sleepvalue}) 我得到了这个: this.loop(count, 500, ()={ var image = Screenshots.getScreenshotOfDesktop(); pictureBox.load(image); images.Add(image); updateTrackBar(); }); 使用
我得到了这个:
this.loop(count, 500, ()=>{ var image = Screenshots.getScreenshotOfDesktop(); pictureBox.load(image); images.Add(image); updateTrackBar(); });
使用此扩展方法:
public static void loop(this Object _object, int count, int delay, MethodInvoker methodInvoker) { for(int i=0; i < count; i++) { methodInvoker(); _object.sleep(delay); } }
这意味着调用语法是:
this.loop(15,500, () => {...code...});
但理想情况下我想做的是:
()=> { ...code...}.loop(10,500);
哪个不起作用,除非我这样做:
new MethodInvoker(()=>{...code...}).loop(10,500);
这将适用于此版本的扩展方法:
public static void loop(this MethodInvoker methodInvoker, int count, int delay) { for(int i=0; i < count; i++) { methodInvoker(); Processes.Sleep(delay); } }不,不幸的是没有.
我blogged about this很久以前:(
但是,通过正确选择缩进,您可以使其看起来几乎与正常循环相同:
HelperType.Loop(count, 500, () => { // Code here });
这就是很多Parallel Extensions样本的样子
我不会把它作为你实际上不会使用的东西的扩展方法,只是为了你可以使用“this”而不是真正的类型名称…除非你真正使用了对象无论如何,它被称为“开启”.
(我还建议遵循.NET命名约定 – 制作方法PascalCase.)