c# - 需要帮助将 C# 转换为 VB

标签 c# vb.net c#-to-vb.net

<分区>

我使用了一个工具将 C# 转换为 VB。当我在 VB 中运行该程序时,出现以下错误:

Events cannot be declared with a delegate type that has a return type.

如何更正此代码?

C#:

using System;
[assembly: CLSCompliant(true)]

namespace Link.API
{
  public delegate decimal DecimalStringDelegate(string s);
  public delegate long OrderDelegateStatus(Order o);
  public delegate void LongDelegate(long val);
}

using System;
using System.Collections.Generic;
using System.Text;

namespace Link.API
{
  public interface TLServer
  {
    event LongDelegate newOrderCancelRequest;
    event OrderDelegateStatus newSendOrderRequest;
    string ClientName(int clientnum);
    bool SymbolSubscribed(string sym);

    Basket AllClientBasket { get; }
  }
}

VB.NET:

Imports System.Text
Imports System.Collections.Generic
Imports System
<Assembly: CLSCompliant(True)>

Namespace Link.API
  Public Delegate Function DecimalStringDelegate(ByVal s As String) As Decimal
  Public Delegate Function OrderDelegateStatus(ByVal o As Order) As Long
  Public Delegate Sub LongDelegate(ByVal val As Long)
End Namespace

Namespace Link.API
  Public Interface Server
    Event newOrderCancelRequest As LongDelegate
    Event newSendOrderRequest As OrderDelegateStatus
    Function ClientName(ByVal clientnum As Integer) As String
    Function SymbolSubscribed(ByVal sym As String) As Boolean
    ReadOnly Property AllClientBasket() As Basket
  End Interface
End Namespace

最佳答案

正如错误所暗示的,VB 不支持使用具有返回类型的委托(delegate)的事件。所以你不能直接转换代码。一种解决方法是将委托(delegate)改为使用 ByRef 参数:

Public Delegate Sub DecimalStringDelegate(ByVal s As String, ByRef retVal as Decimal)
Public Delegate Sub OrderDelegateStatus(ByVal o As Order, ByRef retVal As Long)

关于c# - 需要帮助将 C# 转换为 VB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283376/

相关文章:

c# - VB.NET 等同于 C# 的 using 指令

vb.net - ManualResetEvent.WaitOne(1) 等待超过 1 毫秒?

vb.net - 有没有办法在 vb.net 中的表单之间传递值? (不使用公共(public)变量)

vb.net - 在 VB.Net 中创建时将项目添加到列表

c# - 将 ActivSync 4.5 与 Visual Studio 2005 安装项目捆绑在一起

vb.net - Where().Count() 与 Count()

c# to vb.net 如何继承多个类?无法转换它。 SharpDevelop 也失败了

c# - 拦截 C# webbrowser 的超链接

C# Visual Studio 2010 嵌入 exe 图标

c# - SOAP 和 ASMX 有什么区别