结构构造器:“必须将字段完全分配,然后控制权才能返回给调用者”

浏览:42日期:2024-03-17
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决结构构造器:“必须将字段完全分配,然后控制权才能返回给调用者”?

您是probability通过Probability属性设置字段的,但是编译器不知道该属性是否设置了字段…因此您需要显式初始化概率字段本身

public AttackTraits(double probability, int damage, float distance){ this.probability = 0; distance = distance; damage = damage;}解决方法

这是我要编写的结构:

public struct AttackTraits{ public AttackTraits(double probability,int damage,float distance) {Probability = probability;Distance = distance;Damage = damage; } private double probability; public double Probability {get{ return probability;}set{ if (value > 1 || value < 0) {throw new ArgumentOutOfRangeException('Probability values must be in the range [0,1]'); } probability = value;} } public int Damage { get; set; } public float Distance { get; set; }}

这将导致以下编译错误:

在将其所有字段分配给之前,不能使用“此”对象

在将控制权返回给调用方之前,必须完全分配字段“ AttackTraits.probability”

在将控制权返回给调用者之前,必须完全分配自动实现的属性“ AttackTraits.Damage”的备用字段。考虑从构造函数初始化程序调用默认构造函数。

在将控制权返回给调用者之前,必须完全分配自动实现的属性“AttackTraits.Distance”的备用字段。考虑从构造函数初始化程序调用默认构造函数。

我究竟做错了什么?

相关文章: