В C# вы должны объявить метод с параметром ref
, как это:
void MyFunction(ref int p)
{
p=5;
}
Если вы затем вызвать его как MyFunction(ref x)
значение х в вызывающем будет изменен. Если вы не хотите, чтобы он был изменен, просто скопируйте его в фиктивную переменную. Вы можете создать перегрузку MyFunction, что делает это внутренне:
void MyFunction(int p)
{
MyFunction(ref p);
}
Было бы технически не быть «одна функция», как вы хотите, но код не будет дублироваться и любому человеку, читающему ваш код было бы отображаются как один, но для компилятора это два. Вы могли бы назвать их так:
int x = 10;
MyFunction(x); // x = 10
MyFunction(ref x); // x = 5
Это не работает, как вы описываете на C++, либо ... –