Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在构造函数中初始化不起作用_C#_Class_Version Control_Constructor_Initialization - Fatal编程技术网

C#在构造函数中初始化不起作用

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

我有一个属性来检查Version Contorl是否为null。如果为null,则使用
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; 
    }   
}