Lambda property

本文关键字:property Lambda | 更新日期: 2023-09-27 18:30:38

我不确定这是否是问这个问题的正确地方,但我无法联系作者或提交任何类型的问题。

我正在复习 v6 的 C#,所以我想我会浏览一下基本的 C# 6.0,关于属性,有一段代码:

    // Id property declaration
    public string Id
    {
        get
        {
            return _Id;
        }
        // No setter provided.
    }
    private string _Id = default(string);
    public string ID => Id;

我知道以上内容可以重写为

public string Id { get; }
public string ID => Id;

让我感到困惑的部分是这部分public string ID => Id;.

作者没有提到lambda表达式,也没有提到它,它就在那里。 我知道它公开了另一个属性,但我的问题是,像这样公开两个属性是否有意义/价值? 几个小时以来,我一直在搜索有关 lambda 和属性的文档,但我只是找不到任何关于做这样的事情的提及。

Lambda property

这是lambda表达式(Expression-Body Members),它充当函数成员的主体。只要方法描述简洁,c# 6 都可以通过将 Lambda 用于函数体来更轻松地编写。

在这种特殊情况下,为什么您甚至需要支持字段_Id?使用自动实现的属性,您甚至可以消除支持字段。

此外,以下示例再次说明了这一点。在 c# 6 之前,如果需要重写 ToString,它将以这种方式编写。

public override string ToString()
{
 return ID.ToString();
}

在 C# 6 中,这可以缩短为

public override string ToString() =>   ID.ToString() ; 
我想

我已经想通了。 它与inheritance有关,特别是aggregation/composition,您将属性映射到引用类中的现有属性/字段。 它是在阅读《理解关联、聚合和组合》时想到的。

正如我在 OP 中提到的,这个问题特别与 lambda 表达式表达属性的必要性有关。