Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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# 变量声明中的{get;set;}_C# - Fatal编程技术网

C# 变量声明中的{get;set;}

C# 变量声明中的{get;set;},c#,C#,我在一本书中发现了这种声明变量的方法: class JerseyNumber { public string Player { get; private set; } public int YearRetired { get; private set; } string JerseyNumber(string player, int numberRetired) { Player = player; YearRetired = n

我在一本书中发现了这种声明变量的方法:

class JerseyNumber
{
    public string Player { get; private set; }
    public int YearRetired { get; private set; }

    string JerseyNumber(string player, int numberRetired)
    {
        Player = player;
        YearRetired = numberRetired;
    }
}
如果我删除代码,会发生什么变化:

{ get; private set; }
如果我删除代码,会发生什么变化:

{ get; private set; }
然后你会把它变成一个字段而不是一个属性。你会失去你的私有setter,因此玩家的值可以从类外更改。例如,同样的事情也适用于YearRetired属性

如果我删除代码,会发生什么变化:

{ get; private set; }

然后,您将使其成为一个字段而不是一个属性。并且您将丢失您的私有setter,因此可以从类外更改播放器的值。例如,通过删除{get;private set;}您将不再使用自动属性,这同样适用于YearRetired属性。然后需要提供返回和设置这些值的代码

private string _player = "";
public string Player
{
   get { return _player; }
   set { Player = value; }
}

通过删除{get;private set;},您将不再使用自动属性。然后需要提供返回和设置这些值的代码

private string _player = "";
public string Player
{
   get { return _player; }
   set { Player = value; }
}

+1.请注意,这两种更改都不是好的做法,因为通常最好选择属性而不是字段,如果可能的话,最好选择不可变对象而不是可变对象。+1。请注意,这两种更改都不是好的做法,因为通常最好选择属性而不是字段,如果可能的话,最好选择不可变对象而不是可变对象。另外: