相关疑难解决方法(0)

未定义或导入预定义类型“System.Runtime.CompilerServices.IsExternalInit”

我在使用 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)

c#-9.0

30
推荐指数
2
解决办法
6599
查看次数

如何为位置记录定义额外的初始化逻辑?

我想验证用于记录初始化的参数,如果验证失败的话。对于常规类,我可以使用构造函数来实现,但是我应该如何处理记录呢?

对于常规类,我还可以拥有私有构造函数和公共静态工厂方法,它们返回错误或有效实例,但看起来无法将记录的主构造函数设为私有。

对于非位置记录,它与任何其他类一样:

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)

.net c# c#-9.0

10
推荐指数
1
解决办法
2354
查看次数

标签 统计

c#-9.0 ×2

.net ×1

c# ×1