我是否需要声明一个类级变量来保存属性,或者我可以self.{propertyname}
在getter/setter中引用它?
换句话说,我可以这样做吗?(我没有mongoFormId
在任何地方定义):
public string mongoFormId
{
get
{
return this.mongoFormId;
}
set
{
this.mongoFormId = value;
revalidateTransformation();
}
}
Run Code Online (Sandbox Code Playgroud)
p.s*_*w.g 17
您可以使用自动访问器或实现自己的访问器.如果使用自动访问器,C#编译器将为您生成一个支持字段,但如果您实现自己的支持字段,则必须手动提供支持字段(或以其他方式处理该值).
private string _mongoFormId;
public string mongoFormId
{
get { return this._mongoFormId; }
set
{
this._mongoFormId = value;
revalidateTransformation();
}
}
Run Code Online (Sandbox Code Playgroud)
更新:自从提出这个问题以来,C#6.0已经发布.但是,即使使用新的语法选项,仍然无法提供自定义setter主体,而无需显式声明支持字段.
如果您要使用自定义 getter 和 setter,则需要设置一个字段变量并将值存储在那里。
使用您现在拥有的代码,您将遇到堆栈溢出异常。当您将某些内容分配给 时mongoFormId
,您将执行该行this.MongoFormId = value;
。这是对 的赋值mongoFormId
,导致执行该行this.MongoFormId = value;
,依此类推。它永远不会停止。
正确的方法是一个字段:
private string _mongoFormId;
public string mongoFormId {
get { return this._mongoFormId; }
set {
this._mongoFormId = value;
revalidateTransformation();
}
}
Run Code Online (Sandbox Code Playgroud)