C#在构造函数中初始化不起作用
我有一个属性来检查Version Contorl是否为null。如果为null,则使用C#在构造函数中初始化不起作用,c#,class,version-control,constructor,initialization,C#,Class,Version Control,Constructor,Initialization,我有一个属性来检查Version Contorl是否为null。如果为null,则使用tpc.GetService()设置版本控制的值。问题是,即使我设置它,它仍然返回null private VersionControlServer versionControl; public VersionControlServer VersionControl { get { return this.versionControl; } set
tpc.GetService()设置版本控制的值代码>。问题是,即使我设置它,它仍然返回null
private VersionControlServer versionControl;
public VersionControlServer VersionControl
{
get
{
return this.versionControl;
}
set
{
if (versionControl == null)
{
this.versionControl = this.tpc.GetService<VersionControlServer>();
}
}
}
专用版本控制服务器版本控制;
公共版本控制服务器版本控制
{
得到
{
返回this.versionControl;
}
设置
{
if(versionControl==null)
{
this.versionControl=this.tpc.GetService();
}
}
}
您的空支票放错了位置。您应该将它放在获取
中,并在那里初始化它
每次设置它时,您似乎都在重新激活它。也许您应该在设置时使用值
?您可以删除它(即集
),但这会使此属性成为只读属性
public VersionControlServer VersionControl
{
get
{
if (versionControl == null)
{
this.versionControl = this.tpc.GetService<VersionControlServer>();
}
return this.versionControl;
}
set
{
this.versionControl = value;
}
}
公共版本控制服务器版本控制
{
得到
{
if(versionControl==null)
{
this.versionControl=this.tpc.GetService();
}
返回this.versionControl;
}
设置
{
this.versionControl=值;
}
}
它将为null
,直到您设置它的值(以便调用您的set
访问器)
您应该将其更改为(忽略可能的线程问题):
公共版本控制服务器版本控制
{
得到
{
if(versionControl==null)
{
this.versionControl=this.tpc.GetService();
}
返回this.versionControl;
}
}
此属性不需要设置。。由于您从不费心使用值
Um,因此当您编写代码来初始化this.versionControl
时,您需要将设置
处理程序。因此,它不会在get
期间运行。(另外,您的集合
处理程序没有使用值
,这使得它实际上不是一个setter。)没有。我在一个方法中使用这个属性,它说它不能被赋值,因为它是readonly@user2379805然后不要移除集合
将其放回,就像我的答案一样。谢谢。我还尝试了您的解决方案,但无法在方法中分配它,因为它使属性为只读。您的属性已为只读。。您从不在“setter”中使用value
。
public VersionControlServer VersionControl
{
get
{
if (versionControl == null)
{
this.versionControl = this.tpc.GetService<VersionControlServer>();
}
return this.versionControl;
}
}