C# 到 VB.NET 的委托

Dav*_*eer 1 .net c# vb.net nunit

我正在尝试使用 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();
}
Run Code Online (Sandbox Code Playgroud)

然后进入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
Run Code Online (Sandbox Code Playgroud)

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

就像是:AddressOf DoSomething(2)

Ser*_*rvy 5

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

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
Run Code Online (Sandbox Code Playgroud)