Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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#_Accessor - Fatal编程技术网

在C#堆栈溢出中使用访问器

在C#堆栈溢出中使用访问器,c#,accessor,C#,Accessor,从 公共字符串名称{get{ 返回名称;}集{ 名称=值;}} 那么,为什么我将该值设置为: public int numHighAttacksHit { get { return numHighAttacksHit - handicapHighAttacks; } set { numHighAttacksHit = value; } } this.numHighAttacksHit = 0; 它一次又一次地循环

公共字符串名称{get{ 返回名称;}集{ 名称=值;}}

那么,为什么我将该值设置为:

public int numHighAttacksHit
        {
            get { return numHighAttacksHit - handicapHighAttacks; }
            set { numHighAttacksHit = value; }
        }

this.numHighAttacksHit = 0;
它一次又一次地循环,将值设置为numHighAttacksHit,直到我达到堆栈溢出?这是在同一个类中,这有关系吗


屏幕截图:

与MSDN中的示例不同,您正在引用导致堆栈溢出的属性定义中的属性

试一试


与MSDN中的示例不同,您正在引用其定义中的属性,从而导致堆栈溢出

试一试


在属性
numHighAttacksHit
本身中返回属性
numHighAttacksHit
的值——这会创建一个非终止递归,并且是堆栈溢出的源。

在属性中返回属性
numHighAttacksHit
的值
numHighAttacksHit
本身——这会创建一个非终止递归,是堆栈溢出的根源。

C#区分大小写:名称和名称是两个不同的东西,在MSDN文章中,它将名称定义为私有字段:

private string name;   // the name field
public string Name   // the Name property
{
   get 
   {
      return name; 
   }
}
在您的示例中,您没有该私有字段,因此numHighAttacksHit将在一个循环中访问自身。

C#区分大小写:名称和名称是两个不同的东西,在MSDN文章中,它将名称定义为私有字段:

private string name;   // the name field
public string Name   // the Name property
{
   get 
   {
      return name; 
   }
}

在您的示例中,您没有该私有字段,因此numHighAttacksHit将在一个循环中访问自身。

因为在第二个循环中,您一次又一次地设置numHighAttacksHit,而在第一个循环中,您将值设置为name变量,而不是属性。

因为在第二个循环中,您一次又一次地设置numHighAttacksHit,在第一次设置中,您将值设置为name variable而不是属性。

属性需要引用一个字段,如下所示:

private int numHighAttacksHit;
public int NumHighAttacksHit   // <-- note the pascal case
    {
        get { return numHighAttacksHit - handicapHighAttacks; }
        set { numHighAttacksHit = value; }
    }

this.NumHighAttacksHit = 0;
private int numHighAttacksHit;

public int NumHighAttacksHit/属性需要引用一个字段,如下所示:

private int numHighAttacksHit;
public int NumHighAttacksHit   // <-- note the pascal case
    {
        get { return numHighAttacksHit - handicapHighAttacks; }
        set { numHighAttacksHit = value; }
    }

this.NumHighAttacksHit = 0;
private int numHighAttacksHit;
公共int NumHighAttacksHit//