将C#Lambda转换为VB.NET
我正在尝试将以下C#代码转换为VB.NET。问题在于lambda表达式将C#Lambda转换为VB.NET,c#,vb.net,lambda,C#,Vb.net,Lambda,我正在尝试将以下C#代码转换为VB.NET。问题在于lambda表达式 public class UserStore { private readonly IDatabaseFactory _databaseFactory; private DataContext _db; protected DataContext Db => _db ?? (_db = _databaseFactory.GetDataContext()); public UserSt
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表达式无法转换为'DataContext',因为'DataContext'不是委托类型。
有人能告诉我我做错了什么吗
我正在尝试将以下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;
}
}
问题是您将表达式实体属性误认为是lambda
在C中#
这是一种简短的写作方式
protected DataContext Db {
get
{
return _db ?? (_db = _databaseFactory.GetDataContext());
}
}
public Abc Foo(Bar bar)
{
return Blah(bar);
}
它根本不是一只羔羊;如果您想将其转换为VB,只需编写一个普通的VB属性getter
请注意,C#还允许您使用方法执行此操作:
public Abc Foo(Bar bar) => Blah(bar);
这只是一个简短的写作方式
protected DataContext Db {
get
{
return _db ?? (_db = _databaseFactory.GetDataContext());
}
}
public Abc Foo(Bar bar)
{
return Blah(bar);
}
这不是拉姆达。这是我的财产,我不知道。非常感谢。