Я итальянский парень, извините за мой плохой английский! Я хочу знать, есть ли способ использовать метод с передачей параметра по ссылке или по значению, когда захотите.
Например, если я хочу этот метод:
public mehtod (ref int a)
{
//do some stuff
}
И этот другой метод
public method (int a)
{
//do the same stuff of method(ref int a)
}
Есть ли способ получить тот же результат, но без создания двух разных методов с одним и тем же телом? Мне это нужно, потому что иногда мне нужны побочные эффекты при использовании "метода", иногда я хочу, чтобы он не был изменен!
Спасибо огромное!
Вы можете просто вызвать первый метод из второго:
public void method (ref int a)
{
//do some stuff
}
public void method(int a)
{
method(ref a); //do the same stuff of method(ref int a)
}
Если тип возврата void
, вы можете изменить его, чтобы вернуть измененное значение, а не использовать ref
. Затем вызывающий может игнорировать возвращаемое значение или использовать возвращаемое значение, поскольку они выбирают:
int Method(int foo) {
// ...
foo = ...
// ...
return foo;
}
С:
Method(a);
Vs
a = Method(a);
static void callingMethod()
{
int a = 0;
method(a); // original a is not modified
// or
method(ref a); // a is modified
}
static void method(int a)
{
method(ref a);
}
static void method(ref int a)
{
// do stuff
}
Я не уверен, почему вы хотите это сделать. Но есть один способ, которым вы можете
public mehtod (ref int a, bool)
то внутри него, если измененный передан false, тогда внутри объявить новую переменную и присвоить только значение и использовать его как int b = a; и использовать b для обработки в конце на основе флага, вы обновляете переменную ref или оставляете ее
a
является параметромref
, так зачем вообще включать эту версию?