Измените любое из полей в классе, используя функцию - PullRequest
1 голос
/ 31 марта 2019

Я хотел бы изменить любую из числовых переменных, чтобы их можно было увеличивать или уменьшать в зависимости от процента или значения таким образом, чтобы это выглядело примерно так:

private int myvariable;
public (int, IncreaseType) MyVariable
{
    get
    {
        return myvariable;
    }
    set
    {
        if (value.Item2 == IncreaseType.Percentage)
        {
            myvariable = myvariable * value.Item1;
        }
        else
        {
            myvariable += value.Item1;
        }
    }
}

Есть лиспособ сделать это с помощью обобщенной функции в классе, которая может изменить любую переменную класса?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Чтобы сделать его более универсальным (UPD: есть некоторые проблемы при определении общего процента):

//You can also make PerValue class
public struct PerValueInt
{
    public int Value;
    public PerValueInt(int value)
    {
        Value = value;
    }

    public void Percent (float percent)
    {
        Value = (int)(Value * (percent / 100f));
    }
}

И используйте это как-то так:

public PerValueInt MyVariable = new PerValueInt(50);

//...
Debug.Log(MyVariable.Value); //prints 50
MyVariable.Percent(90);
Debug.Log(MyVariable.Value); //prints 45
//...
0 голосов
/ 01 апреля 2019

Я бы рекомендовал попробовать этот метод.

public void foo(int percentage) {
  this.myvariable *= (percentage/100);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...