In C++, passando riferimenti const è una pratica comune - per esempio:Come faccio a passare un riferimento const in C#?
#include <iostream>
using namespace std;
class X
{
public :
X() {m_x = 0; }
X(const int & x) {m_x = x; }
X(const X & other) { *this = other; }
X & operator = (const X & other) { m_x = other.m_x; return *this; }
void print() { cout << m_x << endl; }
private :
int m_x;
};
void main()
{
X x1(5);
X x2(4);
X x3(x2);
x2 = x1;
x1.print();
x2.print();
x3.print();
}
Questo semplice esempio illustra come si fa - più o meno. Comunque ho notato che in C# questo non sembra essere il caso. Devo passare i riferimenti const in C#? per cosa ho bisogno della parola chiave "ref"? Si noti che conosco e capisco quali sono i riferimenti e i tipi di valore C#.
Dal momento che si sta pensando in termini probabilmente C++ il modo migliore di pensare la parola chiave ref è come un puntatore. Se lo si utilizza con un tipo di valore, si tratta di un singolo puntatore, con un tipo di riferimento è un puntatore a un puntatore. –
Duplicato: http://stackoverflow.com/questions/114149 –
Un buon riferimento per questo genere di cose è il blog di Eric Lipperts. In particolare la sua voce "Riferimenti non è indirizzi". http://blogs.msdn.com/ericlippert/archive/2009/02/17/references-are-not-addresses.aspx –