将C#Lambda转换为VB.NET

将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

我正在尝试将以下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表达式无法转换为'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);
}

这不是拉姆达。这是我的财产,我不知道。非常感谢。