none
Как изменить значение переменной с помощью метода? RRS feed

  • Вопрос

  • Код:
            private void button1_Click(object sender, EventArgs e)
            {
                Method(a);
            }
    
            private void Method(int b)
            {
                b += 1;
                MessageBox.Show(a.ToString());
            }
    Как сделать чтобы менялось значение "a"? - в сообщении видно что осталось "0".
    2 августа 2012 г. 17:33

Ответы

  • Добрый день.

    Для того, чотбы при изменении параметра внутри метода, изменялась и переданная переменная, необходимо передавать параметры по ссылке, а не как у вас по значению. Для передачи по ссылке используется ключевое слово ref, который помечается параметр и при вызове указывается перед переменной:

            private void button1_Click(object sender, EventArgs e)
            {
                Method(ref a);
            }
    
            private void Method(ref int b)
            {
                b += 1;
                MessageBox.Show(a.ToString());
            }

    • Помечено в качестве ответа Ziya Ceferov 3 августа 2012 г. 7:46
    3 августа 2012 г. 3:10
    Отвечающий

Все ответы

  • Добрый день.

    Для того, чотбы при изменении параметра внутри метода, изменялась и переданная переменная, необходимо передавать параметры по ссылке, а не как у вас по значению. Для передачи по ссылке используется ключевое слово ref, который помечается параметр и при вызове указывается перед переменной:

            private void button1_Click(object sender, EventArgs e)
            {
                Method(ref a);
            }
    
            private void Method(ref int b)
            {
                b += 1;
                MessageBox.Show(a.ToString());
            }

    • Помечено в качестве ответа Ziya Ceferov 3 августа 2012 г. 7:46
    3 августа 2012 г. 3:10
    Отвечающий
  • конечно, если это не ссылочная переменная, или ссылочная, которую нужно заменить новой.
    (на случай, если параметр дан для примера)
    • Изменено INFEL8 3 августа 2012 г. 4:26
    3 августа 2012 г. 4:25