我在使用 Visual Studio 2019 预览版测试 C# 9.0 的新功能时遇到了这个问题。我正在测试 init setter,但编译器显示错误消息:
错误 CS0518 未定义或导入预定义类型“System.Runtime.CompilerServices.IsExternalInit”。以下是我尝试过的代码片段:
public class Book
{
string ISBN { get; init; }
}
Run Code Online (Sandbox Code Playgroud) 我想验证用于记录初始化的参数,如果验证失败的话。对于常规类,我可以使用构造函数来实现,但是我应该如何处理记录呢?
对于常规类,我还可以拥有私有构造函数和公共静态工厂方法,它们返回错误或有效实例,但看起来无法将记录的主构造函数设为私有。
对于非位置记录,它与任何其他类一样:
public record Person
{
public string FirstName {get; init;}
public string LastName {get; init;}
public Person (string firstName, string lastName)
{
(FirstName,LastName) = (firstName, lastName);
}
}
Run Code Online (Sandbox Code Playgroud)