Gra*_*ell 3 c# silverlight callback
我有一个相当通用的类(Record),我已经添加了一个回调处理程序,所以我可以做类似下面的事情.
record.Save(AfterSaveMethod);
Run Code Online (Sandbox Code Playgroud)
其中还返回创建的记录的标识号.我现在的问题是我在循环中有这个嵌套的保存例程,我需要使用/传递i变量!
for (int i; i < count ;i++)
{
record.Save(AfterSaveMethod2) //but I need to pass i through as well
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
\ _重写save方法并将其包含在此类(yuk)中,
B \有一个重载的保存选项,它将一个对象作为参数,因此我可以将它传递给我的记录类,然后将其与标识号合并.返回身份编号和传递对象中包含的任何额外内容(嗯,听起来有点乱),
C \有更性感的选择吗?
这是匿名方法或lambda表达式真正方便的地方:)
试试这个(假设C#3):
for (int i = 0; i < count; i++)
{
int index = i;
record.Save(id => AfterSaveMethod2(id, index));
}
Run Code Online (Sandbox Code Playgroud)
请注意,此处的lambda表达式是捕获index,而不是i- 这是为了避免关闭循环变量时固有的问题.
| 归档时间: |
|
| 查看次数: |
2880 次 |
| 最近记录: |