这是我想写的结构:
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; }
}
Run Code Online (Sandbox Code Playgroud)
这会导致以下编译错误:
在分配所有字段之前,不能使用"this"对象 …
假设我们有这两个结构......
public struct Example
{
public int Number { get; set; }
public Example(int Number)
{
Number = number;
}
}
Run Code Online (Sandbox Code Playgroud)
和:
public struct Example
{
public int Number { get; set; }
public Example(int number) : this()
{
Number = number;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以看到有一个结构体,**this()**最后有一个构造函数,另一个没有。
两者有什么区别?