En C# vous devez déclarer la méthode avec un paramètre ref
, comme ceci:
void MyFunction(ref int p)
{
p=5;
}
Si vous appelez alors comme MyFunction(ref x)
la valeur de x dans l'appelant sera modifié. Si vous ne voulez pas qu'il soit modifié, il suffit de le copier dans une variable fictive. Vous pouvez créer une surcharge de MyFunction qui fait cela en interne:
void MyFunction(int p)
{
MyFunction(ref p);
}
Il serait techniquement pas « une fonction », comme vous voulez, mais le code ne serait pas dupliqué et à toute lecture humaine de votre code, il serait apparaître comme un - mais pour le compilateur c'est deux. Vous les appeler comme ceci:
int x = 10;
MyFunction(x); // x = 10
MyFunction(ref x); // x = 5
Cela ne fonctionne pas comme vous le décrivez en C++, soit ... –