如何解决结构构造器:“必须将字段完全分配,然后控制权才能返回给调用者”
您是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”的备用字段。考虑从构造函数初始化程序调用默认构造函数。
我究竟做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。