gpt4 book ai didi

c# - 复制构造函数不满足 `required` 属性

转载 作者:行者123 更新时间:2023-12-03 07:51:22 24 4
gpt4 key购买 nike

我有一个带有 required 属性的类。我创建了一个复制构造函数,将该属性初始化为该类的源实例所具有的相同内容。为什么编译器会给我错误:

CS9035:必须在对象初始值设定项或属性构造函数中设置必需的成员“PropertyName”。

public class Class1
{
public required string Name {get; set;}

public Class1(){}

public Class1(Class1 src)
{
Name = src.Name;
}
}

public class OtherClass
{
public void func()
{
// This works fine
var data = new Class1
{
Name = "test"
};

// This gives compiler error
var data1 = new Class1(data);
}
}

最佳答案

documentation 中所述(强调):

The required modifier indicates that the field or property it's applied to must be initialized by an object initializer.

语句 var data1 = new Class1(data); 不会使用对象初始值设定项初始化 Name 属性,因此您会收到编译器错误。

您可以通过添加 [SetsRequiredMembers] 属性(可在 System.Diagnostics.CodeAnalysis 命名空间):

[SetsRequiredMembers]
public Class1(Class1 src)
{
Name = src.Name;
}

不再有编译器错误!

关于c# - 复制构造函数不满足 `required` 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77055825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com