【问题标题】:C# 7 Expression Bodied ConstructorsC# 7 表达式主体构造函数
【发布时间】:2017-06-17 20:48:57
【问题描述】:

在 C# 7 中,如何使用 2 个参数编写这样的表达式主体构造函数。

public Person(string name, int age)
{
  Name = name;
  Age = age;
}

【问题讨论】:

标签: .net c#-7.0


【解决方案1】:

一种方法是使用元组和解构来允许在一个表达式中进行多个赋值:

public class Person
{
    public string Name { get; }
    public int Age { get; }

    public Person(string name, int age) => (Name, Age) = (name, age);
}

从 C# 7.1(随 Visual Studio 2017 Update 3 引入)开始,编译器代码现在将优化元组的实际构造和解构。因此,与“普通”分配相比,这种方法没有性能开销。

【讨论】:

  • 这是邪恶的。我正在使用 C# 7.1,但我无法取消看到这一点。
  • @PanagiotisKanavos,它在什么方面是邪恶的?好像 C# 7.1,我已经开始使用它,因为它对我来说似乎是一个很好的解决方案。
  • @DavidArno 考虑到为了优雅的语法而在后台使用了多少 CPU 周期,他可能认为这有点邪恶。我决定创建一个小应用程序来进行并排比较,上面的元组语法使更新对象所需的时间增加了一倍。恕我直言,这实际上令人印象深刻,并说明了元组的性能如何。对于 99.999% 的开发人员,我会说这里的性能差异是无关紧要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多