为什么这是有效的
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;
}
}
答案 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;组; }