Ключевое слово ref означает, что передача методу переменной происходит по ссылке.
При передаче переменной методу по ссылке, происходит реальная передача значения переменной, поэтому, значение после выполнения метода изменяется.
Переменной, передаваемой через параметр, должно быть сначала присвоено значение, т.е. переменная должна быть инициализирована.
При вызове метода, ключевое слово ref нужно указывать явно.
Метод, имеющий в параметре ключевое слово ref, не может быть перегружен.
При передаче переменной методу по ссылке, происходит реальная передача значения переменной, поэтому, значение после выполнения метода изменяется.
Переменной, передаваемой через параметр, должно быть сначала присвоено значение, т.е. переменная должна быть инициализирована.
При вызове метода, ключевое слово ref нужно указывать явно.
Метод, имеющий в параметре ключевое слово ref, не может быть перегружен.
Main.cs
using
System;
class
One {
-
public
decimal
val;
-
public
One(
decimal
arg) {
-
val = arg;
-
}
-
//аргумент передается по значению
-
public
void
Fun1(
decimal
arg) {
-
arg*=2;
-
}
-
//аргумент передается по ссылке
-
public
void
Fun2(
ref
decimal
arg) {
-
arg*=2;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(
"начальное значение поля : {0}"
, O.val);
-
O.Fun1(O.val);
-
Console.WriteLine(
"начальное значение поля : {0}"
, O.val);
-
//при вызове метода, ключевое слово ref нужно указывать явно
-
O.Fun2(
ref
O.val);
-
Console.WriteLine(
"начальное значение поля : {0}"
, O.val);
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
class
One {
-
public
decimal
val;
-
public
One(
decimal
arg) {
-
val = arg;
-
}
-
//аргумент передается по значению
-
public
void
Fun1(
decimal
arg) {
-
arg*=2;
-
}
-
//аргумент передается по ссылке
-
public
void
Fun2(
ref
decimal
arg) {
-
arg*=2;
-
}
}
class
Program {
-
public
static
int
Main() {
-
One O =
new
One(10);
-
Console.WriteLine(
"начальное значение поля : {0}"
, O.val);
-
O.Fun1(O.val);
-
Console.WriteLine(
"начальное значение поля : {0}"
, O.val);
-
//при вызове метода, ключевое слово ref нужно указывать явно
-
O.Fun2(
ref
O.val);
-
Console.WriteLine(
"начальное значение поля : {0}"
, O.val);
-
Console.ReadKey();
-
return
0;
-
}
}
начальное значение поля : 10
начальное значение поля : 10
начальное значение поля : 20
начальное значение поля : 10
начальное значение поля : 20