Лабораторный практикум по информатике


Передача параметров по значению и по ссылке



бет59/83
Дата06.01.2022
өлшемі1,1 Mb.
#15674
түріПрактикум
1   ...   55   56   57   58   59   60   61   62   ...   83

Передача параметров по значению и по ссылке


Когда параметры передаются в метод обычным образом (без до- полнительных ключевых слов ref и out), любые изменения параметров внутри метода не влияют на его значение в основной программе. Пред- положим, у нас есть следующий метод:

private void Calc(int Number)

{

Number = 10;



}
Видно, что внутри метода происходит изменение переменной

Number, которая была передана как параметр. Попробуем вызвать метод:

int n = 1; Calc(n);

MessageBox.Show(n.ToString());

На экране появится число 1, то есть, несмотря на изменение пере- менной в методе Calc, значение переменной в главной программе не изменилось. Это связано с тем, что при вызове метода создается копия переданной переменной, именно ее изменяет метод. При завершении метода значение копий теряется. Такой способ передачи параметра на- зывается передачей по значению.

Чтобы метод мог изменять переданную ему переменную, ее следу- ет передавать с ключевым словом ref – оно должно быть как в сигнату- ре метода, так и при вызове:

private void Calc(ref int Number)

{

Number = 10;



}
int n = 1; Calc(ref n);

MessageBox.Show(n.ToString());

В этом случае на экране появится число 10: изменение значения в методе сказалось и на главной программе. Такая передача метода на- зывается передачей по ссылке, т. е. передается уже не копия, а ссылка на реальную переменную в памяти.

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

инициализировать такие переменные, а передавать их с ключевым сло- вом out. Компилятор понимает, что начальное значение переменной не важно, и не ругается на отсутствие инициализации:

private void Calc(out int Number)



{

Number = 10;



}
int n; // Ничего не присваиваем! Calc(out n);



Достарыңызбен бөлісу:
1   ...   55   56   57   58   59   60   61   62   ...   83




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет