Понимание, почему я получаю ошибку рекурсии внутри метода get - PullRequest
0 голосов
/ 05 декабря 2018

В настоящее время я изучаю свойства и столкнулся с небольшой проблемой.Когда я возвращаю свое свойство в методе 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 голосов
/ 05 декабря 2018

Причина-

Вы используете само свойство Gold в его получателе, которое рекурсивно вызывает его получатель снова и снова.

Solution-

Вместо этого используйте переменную -

public int Gold
{
    get
    {
        return gold + Bonus;  
    }    
    set                
    {
        gold = value; 
    }
}
0 голосов
/ 05 декабря 2018

Поскольку вы звоните Gold бесконечно

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

То есть

Give me Gold 

Gold  + Bonus

oh give me Gold

Gold  + Bonus

и т. Д.

прежде чем он сможет добавить бонус, он снова вызывает золото

Позвольте мне выяснить, как это исправить, как должно быть очевидно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...