在 C# 中使用表达式主体声明静态 class 或结构方法

Declare static class or struct method using expression body in C#

我一直使用不可变的 readonly 字段和 public Expression<Func<>> 吸气剂,如下所示。

public class Person
{
    public static Person Named(string surname, string given) { return new Person(surname, given); } // ugly!

    protected Person(string surname, string given) { _surname = surname; _given = given; }

    private readonly string _surname;
    private readonly string _given;

    public string Name => _given + _surname; // cool!
}

我真的很希望能够像上面那样使用静态方法来做到这一点。

我尝试了不同的语法,但 none 有效,即:

public static Person Named => x,y => new Person(x,y);
public static Person Named = (x,y) => new Person(x,y);
public static Person Named => ((x,y) => new Person(x,y));

正确的做法如下

public static Person Named(string surname, string given) => new Person(surname, given);

值得一提的是,instance 和 static 在语法上没有区别 properties/methods。