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?