如何在 C#-9 中使用“数据成员”

How to use `Data members` in C#-9

我正在尝试 C# 9 的新语法,但未能使用 Data members

文档说语法是:

public data class Person { string FirstName; string LastName; }

但是,我遇到了以下编译错误:

CS0116: A namespace cannot directly contain members such as fields or methods
IDE1007: The name 'data' does not exist in the current context.

我尝试过其他语法,它们都有效。所以,我确定我使用的是 C#-9

更新:建议 作为可能的答案。

但是,这不是我的答案,我认为接受的 link 答案是错误的。记录类型和数据成员是两个不同的东西。数据成员是一种定义不可变类型的新方法,而记录类型是值对象。
文档建议在数据成员 类 中只需要定义私有字段之类的属性,因此 Person 等于:

public data class Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

data 类 现在称为 record。它们是相同的、不可变的对象,其行为类似于值类型(表现出结构性或换句话说基于值的相等性)。

关于您在 OP 中的代码,

public data class Person { string FirstName; string LastName; }

可以改写为

public record Person(string FirstName, string LastName);

以上语法使用 Primary Constructor 。如果你想跳过主构造函数,你也可以将记录声明为

public record Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

在任何一种情况下,Properties、FirstName 和 LastName 只能在初始化期间分配(通过构造函数或对象初始化程序),之后不能分配。