[英]Converting C# Lambda to VB.NET
我正在尝试将以下C#代码转换为VB.NET。 问题在于lambda表达式。
public class UserStore
{
private readonly IDatabaseFactory _databaseFactory;
private DataContext _db;
protected DataContext Db => _db ?? (_db = _databaseFactory.GetDataContext());
public UserStore(IDatabaseFactory databaseFactory)
{
_databaseFactory = databaseFactory;
}
}
以下是我将代码转换为的内容:
Public Class UserStore
Private ReadOnly _databaseFactory As IDatabaseFactory
Private _db As DataContext
Protected Db As DataContext = Function() As DataContext
If _db Is Nothing Then
_db = _databaseFactory.GetDataContext()
End If
Return _db
End Function
Public Sub New(databaseFactory As IDatabaseFactory)
_databaseFactory = databaseFactory
End Sub
End Class
由于某种原因,转换后的lambda会给出错误Lambda expression cannot be converted to 'DataContext' because 'DataContext' is not a delegate type.
有人可以告诉我我在做什么错吗?
我正在尝试将以下C#代码转换为VB.NET。 问题在于lambda表达式。
问题是您将表达式健全的属性误认为是lambda。
在C#中
protected DataContext Db => _db ?? (_db = _databaseFactory.GetDataContext());
是一种简短的写作方式
protected DataContext Db {
get
{
return _db ?? (_db = _databaseFactory.GetDataContext());
}
}
根本不是lambda。 如果要将其转换为VB,只需编写一个普通的VB属性getter。
请注意,C#还允许您使用方法来完成此技巧:
public Abc Foo(Bar bar) => Blah(bar);
只是一种简短的写作方式
public Abc Foo(Bar bar)
{
return Blah(bar);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.