使用表达式定义的属性与传统方法之间存在什么实际差异?

Cyb*_*ist 2 c# c#-6.0

我在2016年从.NET C#的全职编程中退休,但最近刚回来作为一个业余爱好者程序员.我有兴趣发现一种使用胖箭头编码属性的新方法:

public DateTime PicDate { get => _picDate; set => _picDate = value; }
Run Code Online (Sandbox Code Playgroud)

这就是我习惯的(以及get; set;事物):

public int Century
{
    get
    {
        return _century;
    }
    set
    {
        _century = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

除了编码的简易性,实现中是否存在实际的实际差异?C#7是否比旧方式更有效地处理新方法?

换句话说,新语法是"比旧"更好吗?

Maf*_*fii 5

它完全一样.它编译为相同的底层IL代码.

但是,我建议使用自动属性,因此您不必自己处理支持字段:

public DateTime PicDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

完全一样

private DateTime _picDate;

public DateTime PicDate 
{ 
  get { return _picDate; }
  set { _picDate = value; }
}
Run Code Online (Sandbox Code Playgroud)

这与=>语法示例完全相同(如Dave所述:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members).

希望这能搞定!