C# 中的委托 VB.NET

A delegate in C# to VB.NET

我正在尝试使用 NUnit 2.6.4

将这个有效的 .NET2 C# 转换为 .NET2 VB.NET
[Test]
public void Test() {
    Assert.Throws<Exception>(delegate {
        DoSomething(2);
    });
}

public void DoSomething(int i) {
    throw new Exception();
}

然后进入VB:

<Test> _
Public Sub Test()
    Assert.Throws(Of Exception)(Sub() DoSomething(2))
End Sub

Public Sub DoSomething(i As Integer)
    Throw New Exception()
End Sub

这适用于 .NET4 但不适用于 .NET2 - 因为我使用的是匿名方法...但是如何在 VB.NET

中表达 .NET2 中的委托

类似于:AddressOf DoSomething(2)

您可以创建一个新的命名方法,而不是使用匿名方法。

Public Sub Test()
    Assert.Throws(Of Exception)(AddressOf DoSomethingPassingTwo)
End Sub

Public Sub DoSomethingPassingTwo()
    DoSomething(2)
End Sub

Public Sub DoSomething(i As Integer)
    Throw New Exception()
End Sub