estoy procedentes de C++, donde es fácil hacer algo como esto:de intercambio genérico dificultad
template<class T>
void Swap(T &a, T &b)
{
T temp = a;
a = b;
b = temp;
}
y luego utilizarlo para cambiar los valores en un recipiente:
std::vector<int> someInts;
someInts.push_back(1);
someInts.push_back(2);
Swap(someInts[0], someInts[1]);
Sin embargo, al intentar a hacer lo mismo en C#
void Swap<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
me sale el error "propiedad o indizador no se pueden pasar como out o ref parámetro "
¿Por qué es esto y cómo puedo superarlo?
Muchas gracias
Propiedades e indexadores se introducen por la conveniencia de usarlos como si fueran valores (incluso si bajo el capó son múltiples métodos), pero esta es una de las razones No me gustan. Al menos, debería haber habido alguna manera de hacer lo que quiere hacer el trabajo, pero actualmente, la mayoría de los nuevos lenguajes apestan en ese punto. – comco