了解为什么我在get方法中遇到递归错误

时间:2018-12-05 04:47:25

标签: c# unity3d properties

我目前正在学习有关属性的信息,但遇到了一些问题。当我在get方法中返回属性时,收到递归错误。

这是因为每当我返回属性时,它都会激活get方法,该方法将返回属性,从而激活get方法,等等?

这是我的代码:

using UnityEngine;

struct Enemy
{
    public int Bonus;
    private int gold; 

    public int Gold
    {
        get
        {
            return Gold + Bonus;  
        }                       
        set                 
        {
            gold = value; 
        }
    }
}

2 个答案:

答案 0 :(得分:5)

  

原因-

您正在自己的getter中使用Gold属性本身,该属性一次又一次地递归调用其getter。

  

解决方案-

改为使用变量-

public int Gold
{
    get
    {
        return gold + Bonus;  
    }    
    set                
    {
        gold = value; 
    }
}

答案 1 :(得分:3)

因为您不停地打电话给Gold

public int Gold // here
{
    get
    {
        return Gold + Bonus; // here 

Give me Gold 

Gold  + Bonus

oh give me Gold

Gold  + Bonus

ect ect

在可以添加奖金之前,它会再次调用金币

这很明显,让您找出解决方法