将 C# Lambda 转换为 vb.net

发布于 2024-10-10 04:04:04 字数 699 浏览 2 评论 0原文

需要帮助将其转换为 VB.NET

   public void GetCustomers(Action<IEnumerable<Customer>> onSuccess, Action<Exception> onFail)
    {
        Manager.Customers.ExecuteAsync(op =>
              {
                  if (op.CompletedSuccessfully)
                  {
                      if (onSuccess != null) 
                          onSuccess(op.Results);
                  }
                  else
                  {
                      if (onFail != null)
                      {
                          op.MarkErrorAsHandled();
                          onFail(op.Error);
                      }
                  }
              }
           );
    }

Need Help in converting this to VB.NET

   public void GetCustomers(Action<IEnumerable<Customer>> onSuccess, Action<Exception> onFail)
    {
        Manager.Customers.ExecuteAsync(op =>
              {
                  if (op.CompletedSuccessfully)
                  {
                      if (onSuccess != null) 
                          onSuccess(op.Results);
                  }
                  else
                  {
                      if (onFail != null)
                      {
                          op.MarkErrorAsHandled();
                          onFail(op.Error);
                      }
                  }
              }
           );
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾城月光淡如水﹏ 2024-10-17 04:04:04

您可以使用以下语法进行内联匿名函数/子函数:

Manager.Customers.ExecuteAsync( Sub (op)
                                  If op.CompletedSuccessfully Then
                                    ...
                                  Else
                                    ...
                                  EndIf
                                End Sub )

有时,当您内联使用它时,事情会变得非常不稳定,因此当发生这种情况时,我会给本地子/函数一个名称:

Dim SomeFun as Action(Of OpType) = Sub (op)
                                     ...
                                   End Sub

这很有效,因为您仍然可以关闭您的词法环境。

这全是我的记忆——我家里没有 VS(而且我尽量不在工作中恶搞)。特别是,我不确定我的右括号是否放在正确的位置。

MSDN 参考

You can do in-line anonymous functions/subs with syntax like:

Manager.Customers.ExecuteAsync( Sub (op)
                                  If op.CompletedSuccessfully Then
                                    ...
                                  Else
                                    ...
                                  EndIf
                                End Sub )

Sometimes things get really flakey when you use it inline, so when that happens I give the local sub/function a name:

Dim SomeFun as Action(Of OpType) = Sub (op)
                                     ...
                                   End Sub

This works well because you can still close over your lexical environment.

This is all from memory - I don't have VS at home (and I try not to troll SO at work). In particular, I'm not sure I have my closing paren in the right place.

MSDN Reference

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文