C# 给出C中事件的参数#

C# 给出C中事件的参数#,c#,events,out,C#,Events,Out,我想在事件上给出一个out参数,但它不起作用 像这样 错误:无法在匿名方法或lambda表达式中使用参数out public void CallMyMethod() { //{... code here`removed...just for initialize object} int? count = null; MyMethod(myObject,count); } public static void MyMethod(AnObject myObject,out int?c

我想在事件上给出一个out参数,但它不起作用

像这样

错误:无法在匿名方法或lambda表达式中使用参数out

public void CallMyMethod()
{
  //{...  code here`removed...just for initialize object}

  int? count = null;
  MyMethod(myObject,count);
}
public static void MyMethod(AnObject myObject,out int?count)
{
    //{... code removed...}
    IEnumerable<AnAnotherObject> objects = myObject.GetAllObjects();//... get objects
    count = (count == null) ? objects.Count() : count;
    MyPopup popup = CreateMypopup();
    popup.Show();
    popup.OnPopupClosed += (o, e) =>//RoutedEventHandler
    {
        if (--count <= 0)
        {
            Finished();//method to finish the reccursive method;
        }
        else
        {
            MyMethod(myObject, out count);
        }
    };
}
public void CallMyMethod()
{
//{…此处代码`已删除…仅用于初始化对象}
int?count=null;
MyMethod(myObject,count);
}
公共静态void MyMethod(一个对象myObject,out int?count)
{
//{…代码已删除…}
IEnumerable objects=myObject.GetAllObjects();/…获取对象
count=(count==null)?objects.count():count;
MyPopup popup=CreateMypopup();
popup.Show();
popup.OnPopupClosed+=(o,e)=>//RoutedEventHandler
{

如果(--count将参数传递给事件处理程序的标准方法是定义自己的类

public class MyObjectArgs: EventArgs
{
    MyObject myObj {get;set}
    int? Count {get; set;}
}
然后将该类的同一实例向下传递递归调用

public void CallMyMethod()
{
  //{...  code here`removed...just for initialize object}
  MyObjectArgs args = new MyObjectArgs();
  args.Count = null;
  args.myOby = myObject;
  MyMethod(args);
}

public static void MyMethod(MyObjectArgs args)
{
    //{... code removed...}
    IEnumerable<AnAnotherObject> objects = args.myObj.GetAllObjects();//... get objects
    args.Count = (args.Count == null) ? objects.Count() : args.Count;
    MyPopup popup = CreateMypopup();
    popup.Show();
    popup.OnPopupClosed += (o, e) =>//RoutedEventHandler
    {
        if (--args.Count <= 0)
        {
            Finished();//method to finish the reccursive method;
        }
        else
        {
            MyMethod(args);
        }
    };
}

很高兴能为您提供帮助。请阅读此元数据
args.Count = (args.Count == null) ? objects.Count() : args.Count + objects.Count();