Constructor de estructura: "los campos deben estar completamente asignados antes de devolver el control al llamante".

Aquí hay una estructura que estoy tratando de escribir:

  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; }
        }

Esto da como resultado los siguientes errores de compilación:

El objeto 'this' no se puede usar antes de que todos sus campos estén asignados a

El campo 'AttackTraits.probability' debe asignarse completamente antes de devolver el control a la persona que llama

El campo de respaldo para la propiedad implementada automáticamente 'AttackTraits.Damage' debe asignarse completamente antes de devolver el control a la persona que llama. Considere llamar al constructor predeterminado desde un inicializador de constructor.

El campo de respaldo para la propiedad implementada automáticamente 'AttackTraits.Distance' debe asignarse completamente antes de devolver el control a la persona que llama. Considere llamar al constructor predeterminado desde un inicializador de constructor.

¿Qué estoy haciendo mal?

Respuestas a la pregunta(4)

Su respuesta a la pregunta