3

为什么这是有效的

public struct MyStruct
{
    public MyStruct(double value)
    {
        myField = value;
    }

    private double myField;

    public double MyProperty
    {
        get
        {
            return myField;
        }
        set
        {
            myField = value;
        }
    }
}

这不是

public struct MyStruct
{
    public MyStruct(double value)
    {
        MyProperty = value;
    }
    public double MyProperty
    { 
        get; 
        set;
    }
}
4

3 回答 3

3

你需要这个语法:

public struct MyStruct 
{
    public MyStruct(double value) : this()
    {
        MyProperty = value;
    }

    public double MyProperty { get; set; }
}

我从以下SO 帖子中获得了该信息。

于 2009-11-30T02:21:02.230 回答
3

你能把你的构造函数改成这样吗:

public MyStruct(double value)  : this()
{
    myField = value;
}

原因是在填充支持字段之前,您无法访问属性。通过调用默认构造函数,将填充自动实现的属性支持字段,然后您可以访问这些属性。缺点是您现在要设置属性两次(一次在基本构造函数中,一次在构造函数中)。

If you don't need to use properties and can use fields instead then you can avoid the problems.

于 2009-11-30T02:26:21.083 回答
1

你不需要设置,如果你不打算做那么做任何事情。它们应该用于类型检查。要使第二项工作删除:{ get; 放; }

于 2009-11-30T02:07:31.947 回答