【发布时间】:2019-03-23 16:03:56
【问题描述】:
我需要将此代码转换为 vb.net
public IDisposable WriteLock()
{
EnterWriteLock();
return new LockDisposer(delegate() { ExitWriteLock(); });
}
这是我通过在线转换器得到的
Public Function WriteLock() As IDisposable
EnterWriteLock()
Return New LockDisposer(Sub() ExitWriteLock()) <-- Error Line
End Function
我正在使用 .net 2.0
【问题讨论】:
-
您说您正在使用.Net 2.0,这是否意味着您要针对它或编译它?对于 vb.net lambda 表达式,您至少需要 3.5 编译器。
-
我正在使用 v2008 并以 .net2 为目标,原因是我有一个大型解决方案并且升级到 .net 4 会占用我很多时间,尤其是有超过 50 个报告,这也需要转换器
-
“VB.NET(
Sub关键字)中的动作 lambda 已添加到 Visual Studio 2010 附带的 VB 10 中。多行 lambda 也是如此,由方式。” 根据this answer by Heinzi 到 SO 问题Lamba expression cannot be used as expected。 -
可能
LockDisposer构造函数有一个Action类型的参数。Sub() ExitWriteLock()是LockDisposer的构造函数的输入参数。查看 C# 委托,它调用ExitWriteLock();而没有return语句。 -
假设
LockDisposer的构造函数签名是Public Sub New(exitLock As Action)