c#中使用表达式体声明静态类或结构方法

本文关键字:静态类 结构 方法 声明 表达式 | 更新日期: 2023-09-27 18:16:39

我一直使用不可变的readonly字段以及public Expression<Func<>> getter,如下所示。

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!
}

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

我尝试了不同的语法,但没有一个工作,即:

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));

c#中使用表达式体声明静态类或结构方法

正确方法如下

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

值得一提的是,实例和静态属性/方法的语法没有区别。