如何在struct的构造函数中设置autoproperty?

时间:2009-11-30 02:04:51

标签: c# .net constructor struct automatic-properties

为什么这是有效的

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;
    }
}

3 个答案:

答案 0 :(得分:3)

您需要以下语法:

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

    public double MyProperty { get; set; }
}

我从following SO帖子获得了这些信息。

答案 1 :(得分:3)

您可以将构造函数更改为:

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

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

如果您不需要使用属性并且可以使用字段,那么您可以避免这些问题。

答案 2 :(得分:1)

如果您不打算再做任何事情,那么您不需要获取。它们应该用于类型检查。要使secound工作删除:   {get;组; }