【问题标题】:Need help converting C# to VB [closed]需要帮助将 C# 转换为 VB [关闭]
【发布时间】:2013-03-07 22:51:53
【问题描述】:

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

不能使用具有返回类型的委托类型来声明事件。

如何更正此代码?

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

【问题讨论】:

  • 如果我可以问,为什么你要转换这段代码? C# 和 VB.NET 一起玩非常,你可以混合 .NET 类,相互导入等。
  • @BenjaminGruenbaum “你可以在一个项目中混合 .NET 类” - 它必须是一个单独的程序集。
  • 我找到了this post,希望对您有所帮助。
  • 最坏结果,你可以用 C# 编译它并使用反射器程序(dotPeek,dotNetReflector)将它反编译成 VB.NET。它可能不是最容易理解的代码,但它会起作用。

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


【解决方案1】:

正如错误所暗示的,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)

【讨论】:

  • 谢谢大家的投入
猜你喜欢
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
相关资源
最近更新 更多