微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助将C#转换为VB

我用一个工具将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不支持使用具有返回类型的委托的事件.所以你不能直接转换代码.一种解决方法是将委托更改为使用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)

原文地址:https://www.jb51.cc/csharp/244530.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐