C# 到 VB.NET 这是相关的 C# 代码
namespace MyApp {
public delegate bool AllocHandlerDelegate(int param1);
public interface ILoader {
event AllocHandlerDelegate evAlloc;
bool Load();
}
public class MyLoader : ILoader {
public event AllocHandlerDelegate evAlloc;
public bool Load() {
try {
if (this.evAlloc != null && !evAlloc(1))
return false;
}
}
}
到目前为止,这是我想出的。C# 委托是一个返回布尔结果的函数。所以我将委托定义和事件声明转换如下。
Public Delegate Function AllocHandlerDelegate(ByVal param1 As Integer) As Boolean
Public Event evAlloc As AllocHandlerDelegate
Visual Studio 返回错误消息:“无法使用具有返回类型的委托类型声明事件。”
所以我把它变成了一个 SUB 并完成了这样的翻译*。
Namespace MyApp
Public Delegate Sub AllocHandlerDelegate(ByVal param1 As Integer)
Public Interface ILoader
Event evAlloc As AllocHandlerDelegate
Function Load() As Boolean
End Interface
Public Class MyLoader
Implements ILoader
Public Event evAlloc As AllocHandlerDelegate Implements ILoader.evAlloc
Public Function Load() as Boolean Implements ILoad.Load
Try
If Me.evAllocEvent IsNot Nothing AndAlso Not evAlloc(1) Then
Return False
End Try
End Function
End Class
End Namespace
*注意:我已经意识到我无法检查“事件”对象是否为空,而是检查 VB 内部委托对象 * EVENTNAME *Event。
但是对于第二部分,我不知道该怎么做。在那里我收到以下错误消息: 'Public Event evAlloc (param1 As Integer)' 是一个事件,不能直接调用。使用“RaiseEvent”语句来引发事件。
有任何想法吗?!谢谢你