Изменение значений переменных после метода - PullRequest
0 голосов
/ 24 октября 2019

спасибо, что помогли с множеством проблем кодирования в прошлом, но я наткнулся на еще одну. Мне действительно нужны некоторые указания по этому вопросу.

В приведенном ниже сценарии я пытаюсь изменить значение b, когда met1, met2 and met3 вызывается в функции Main.

    class Class3
{
    public class Storage
    {
        public static int a = 100;
        public static int b = a + 5;
    }
public static void Main()
    {
        Methods Test = new Methods();
        Console.WriteLine("Original a value: {0}", Storage.a);
        Console.WriteLine("b value: {0}", Storage.b);
        Test.Met1();
        Console.WriteLine("After met1: {0}", Storage.a);
        Console.WriteLine("b value: {0}", Storage.b);
        Test.Met2();
        Console.WriteLine("After met2: {0}", Storage.a);
        Console.WriteLine("b value: {0}", Storage.b);
        Test.Met3();
        Console.WriteLine("After met3: {0}", Storage.a);
        Console.WriteLine("b value: {0}", Storage.b);
    }
    public class Methods
    {
        public void Met1()
        {
            Storage.a -= 10;
        }
        public void Met2()
        {
            Storage.a -= 10;
        }
        public void Met3()
        {
            Console.WriteLine("{0}", Storage.a);
            Met1();
            Met2();
            if (Storage.a > 10)
            {
                Met3();
            }
        }
    }
}

Из моего кода выше значение b остается равным 105, хотя значение a изменяется. Из того, что я могу сказать, переменная b не была вызвана снова для изменения ее значения.

Должен ли я поместить переменную b в качестве метода и вызвать его? Это всего лишь пример, который я сделал, и у меня есть более 50 формул, которые требуют изменений при изменении одной из переменных в формуле. Я не думаю, что создание более 50 методов является хорошей идеей, так как должен быть лучший способ кодирования этого.

Спасибо!

1 Ответ

3 голосов
/ 24 октября 2019

Поля не меняются автоматически. Это означает, что b = a + 5 установит b в 105. Чтобы пересчитывать значение b каждый раз, вы можете изменить его на свойство, например:

public static int b => a + 5;

Таким образом, каждый раз, когда выдоступ b он рассчитывает a + 5.

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