用表达式定义的属性与传统方式有什么实际区别?
What practical difference is there between properties defined with expressions and the traditional way?
我于 2016 年从 .NET C# 的全职编程中退休,但最近作为业余程序员回来了。我有兴趣发现一种使用粗箭头对属性进行编码的新方法:
public DateTime PicDate { get => _picDate; set => _picDate = value; }
这是我习惯的(以及 get; set;
的东西):
public int Century
{
get
{
return _century;
}
set
{
_century = value;
}
}
除了易于编码之外,在实现方面是否存在实际差异? C# 7 是否比旧方法更有效地处理新方法?
换句话说,新语法 "better" 比旧语法好吗?
一模一样。它编译为相同的底层 IL 代码。
不过,我建议使用 auto-properties,这样您就不必自己处理支持字段:
public DateTime PicDate { get; set; }
与
完全一样
private DateTime _picDate;
public DateTime PicDate
{
get { return _picDate; }
set { _picDate = value; }
}
这与使用 =>
语法的示例完全相同(如 Dave 所说:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members)。
希望这能解决问题![=14=]
我于 2016 年从 .NET C# 的全职编程中退休,但最近作为业余程序员回来了。我有兴趣发现一种使用粗箭头对属性进行编码的新方法:
public DateTime PicDate { get => _picDate; set => _picDate = value; }
这是我习惯的(以及 get; set;
的东西):
public int Century
{
get
{
return _century;
}
set
{
_century = value;
}
}
除了易于编码之外,在实现方面是否存在实际差异? C# 7 是否比旧方法更有效地处理新方法?
换句话说,新语法 "better" 比旧语法好吗?
一模一样。它编译为相同的底层 IL 代码。
不过,我建议使用 auto-properties,这样您就不必自己处理支持字段:
public DateTime PicDate { get; set; }
与
完全一样private DateTime _picDate;
public DateTime PicDate
{
get { return _picDate; }
set { _picDate = value; }
}
这与使用 =>
语法的示例完全相同(如 Dave 所说:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members)。
希望这能解决问题![=14=]