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

您是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”的备用字段。考虑从构造函数初始化程序调用默认构造函数。

我究竟做错了什么?

总结

以上是真正的电脑专家为你收集整理的结构构造器:“必须将字段完全分配,然后控制权才能返回给调用者。”的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。

你可能想看:
分享给朋友: