首页 > 解决方案 > C# 4 中属性的 lamda (=>) 语法的替代方案?

问题描述

例如,我想拥有以下课程(用较新的 c# 版本编写):

public class Database
{
    static Lazy<Database> _instance = new Lazy<Database>(() => new Database());
    public static Database Instance => _instance.Value;
    private string connectionString = "";
    public SqlConnection Connection => new SqlConnection(connectionString);
}

我如何在 C# 版本 4 中做到这一点?

标签: c#c#-4.0staticsingleton

解决方案


哦,我好像误会你了!

=>标志是返回值(在属性的上下文中,它也称为表达式主体属性)。这是 get 语法的快捷方式:

public int Test => 1;

等于

public int Test { get { return 1; } }

原始问题/答案:

您使用匿名方法:

new Lazy<Database>(delegate() { return new Database() });

表现同样

new Lazy<Database>(() => new Database());

您可以在此处阅读更多内容:https ://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/anonymous-methods


推荐阅读