Csharp/C#教程:=> constant到{get;之间的差异 } =常数分享


=> constant到{get;之间的差异 } =常数

在最佳实践和性能(如果有)的上下文中,什么更好地暴露在C#6+样式属性中作为属性设置或计算的值?

我正在比较表达身体的属性

public string Name => "bob"; 

和自动属性初始化

 public string Name { get; } = "bob"; 

对同样的事情有害吗? 我无法在文档中找到任何可以用于我的案例的文档。 如果在SO中已经涵盖了这一点我很抱歉,搜索让我无处可去。

谨防! 表达式bodied属性将在每次调用时执行表达式 您可以在我的答案的最后部分看到示例。

 public string Name => "bob"; 

是语法糖

 public string Name { get { return "bob"; } } 

 public string Name { get; } = "bob"; 

是语法糖

 private readonly string _name = "bob"; public string Name { get { return _name ; } } 

自己检查一下。

当心 – 这是危险的部分!

请注意,每次调用此属性时都将执行表达式主体。 当它返回一个硬编码值时很好,但是如果它返回一个列表,例如,它每次都会返回一个新列表:

 public List Names => new List() {"bob"}; 

语法糖是:

 public List Names { get { return new List() {"bob"}; } } 

自动属性初始化不是这种情况:

 public List Names { get; } = new List() {"bob"}; 

这是语法糖:

 private readonly List _names = new List() {"bob"}; public string Names { get { return _names; } } 

如您所见,此处列表仅初始化一次。

自己检查一下。

第一个是箭头函数,结果是一个返回常量值的函数:

 // syntactic sugar for: public string Name { get { return "bob"; } } // results into: public string get_Name() { return "bob"; } 

第二个是自动属性,它导致带有值为“bob”的支持字段的getter:

上述就是C#学习教程:=> constant到{get;之间的差异 } =常数分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 // results into: private string _name = "bob"; public string get_Name() { return _name; } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1005300.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐