Конструктор структуры: «поля должны быть полностью назначены до того, как управление будет возвращено вызывающей стороне».
Вот структура, которую я пытаюсь написать:
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; }
}
Это приводит к следующим ошибкам компиляции:
Объект this нельзя использовать, пока все его поля не назначены
Поле 'AttackTraits.probability' должно быть полностью присвоено, прежде чем элемент управления будет возвращен вызывающей стороне.
Вспомогательное поле для автоматически реализованного свойства AttackTraits.Damage должно быть полностью назначено, прежде чем элемент управления будет возвращен вызывающей стороне. Рассмотрите возможность вызова конструктора по умолчанию из инициализатора конструктора.
Вспомогательное поле для автоматически реализованного свойства AttackTraits.Distance должно быть полностью назначено, прежде чем элемент управления будет возвращен вызывающей стороне. Рассмотрите возможность вызова конструктора по умолчанию из инициализатора конструктора.
Что я делаю неправильно?