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表达式(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 表达式表达属性的必要性有关。