相关疑难解决方法(0)

结构构造函数:"在将控制权返回给调用者之前,必须完全分配字段."

这是我想写的结构:

  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"对象 …

c# constructor struct

106
推荐指数
3
解决办法
6万
查看次数

结尾带有`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()**最后有一个构造函数,另一个没有。

两者有什么区别?

c# constructor struct

3
推荐指数
1
解决办法
190
查看次数

标签 统计

c# ×2

constructor ×2

struct ×2