Construtor de estrutura: "os campos devem ser totalmente atribuídos antes que o controle seja retornado ao chamador".

Aqui está uma estrutura que estou tentando escrever:

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

Isso resulta nos seguintes erros de compilação:

O objeto 'this' não pode ser usado antes que todos os seus campos sejam atribuídos a

O campo 'AttackTraits.probability' deve ser totalmente atribuído antes que o controle seja retornado ao chamador

O campo de apoio para a propriedade implementada automaticamente 'AttackTraits.Damage' deve ser totalmente atribuído antes que o controle seja retornado ao chamador. Considere chamar o construtor padrão a partir de um inicializador de construtor.

O campo de apoio para a propriedade implementada automaticamente 'AttackTraits.Distance' deve ser totalmente atribuído antes que o controle seja retornado ao chamador. Considere chamar o construtor padrão a partir de um inicializador de construtor.

O que estou fazendo errado?

questionAnswers(4)

yourAnswerToTheQuestion