Parametros ref

03/05/2005 - 04:13 por Carlos L Salazar | Informe spam
Tengo un objeto SqlConnection el cual paso como parametro tipo ref, pero
cuando trato de compilar me da el siguiente error.

"argumento ref o out debe ser lvalue"

¿Cuál creen ustedes pueder ser el problema?

Carlos L. Salazar I.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
03/05/2005 - 10:49 | Informe spam
Carlos,

¿Qué parámetros pasas al hacer la llamada?
Lvalue es cualquier cosa que puede apareer en la parte izquierda de una
asignación ('l' viene de 'left').
Creo que el problema está en que al hacer la llamada estás pasando el
resultado de una llamada a una función, una propiedad o algo a lo que no se
puede asignar directamente.

Slds - Octavio

"Carlos L Salazar" escribió en el mensaje
news:
Tengo un objeto SqlConnection el cual paso como parametro tipo ref, pero
cuando trato de compilar me da el siguiente error.

"argumento ref o out debe ser lvalue"

¿Cuál creen ustedes pueder ser el problema?

Carlos L. Salazar I.

Respuesta Responder a este mensaje
#2 Octavio Hernandez
03/05/2005 - 11:51 | Informe spam
En resumen, en vez de:

Metodo(sqlCommand1.Connection);

haz:

SqlConnection cn = sqlCommand1.Connection;
Metodo(cn);
sqlCommand1.Connection = cn;


"Carlos L Salazar" escribió en el mensaje
news:
Tengo un objeto SqlConnection el cual paso como parametro tipo ref, pero
cuando trato de compilar me da el siguiente error.

"argumento ref o out debe ser lvalue"

¿Cuál creen ustedes pueder ser el problema?

Carlos L. Salazar I.

Respuesta Responder a este mensaje
#3 Octavio Hernandez
03/05/2005 - 13:55 | Informe spam
Perdón, la llamada debe ser:

Metodo(ref cn);


"Octavio Hernandez" escribió en el mensaje
news:
En resumen, en vez de:

Metodo(sqlCommand1.Connection);

haz:

SqlConnection cn = sqlCommand1.Connection;
Metodo(cn);
sqlCommand1.Connection = cn;

Respuesta Responder a este mensaje
#4 Tristan
03/05/2005 - 20:03 | Informe spam
De todas formas, Carlos, ¿para qué pasas un SqlConnection por referencia?.
Supongo que sabrás que los objetos, clases o tipos referencia, son siempre
referencias. Hay muy pocas ocasiones en las que sea conveniente pasar un
objeto por referencia. Solo en caso de que pretendas cambiar la instancia a
la que apunta desde el propio método. Creo que jamás he creado un método que
pase objetos por referencia.

Lo digo por que un error común (no se si será tu caso) es pensar que cuando
se pasa un objeto por valor se está duplicando el objeto. Pues no, solo se
copia la referencia.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 Octavio Hernandez
03/05/2005 - 22:05 | Informe spam
¡Qué tal, Tristán!

Efectivamente, es muy raro que haga falta pasar objetos por referencia.
El mes pasado me hizo falta usarlo (o eso creo). Estaba escribiendo un
intérprete para un lenguaje de programació cuyo objetivo es generar paso a
paso documentos XML. Algunos comandos CREAN el documento Xml (desde cero,
cargándolo de un fichero, aplicando una transformación a otro, ...), y otros
simplemente lo TRANSFORMAN. Por eso necesitaba un parámetro REF.

Definí la clase base para los comandos (eran unos 20 más menos) así:

public abstract class Comando
{
// ...
public abstract bool Ejecutar(ref XmlDocument doc);
// ...
}

El intérprete ejecuta un bucle más o menos así:

XmlDocument documento = null;
// cargar el programa de generación
bool continuar = true;
while (continuar)
{
// obtener siguiente comando (cmd)
// ejecutarlo:
continuar = cmd.Ejecutar(ref documento);
}

Salu2 - Octavio

"Tristan" escribió en el mensaje
news:%
De todas formas, Carlos, ¿para qué pasas un SqlConnection por referencia?.
Supongo que sabrás que los objetos, clases o tipos referencia, son siempre
referencias. Hay muy pocas ocasiones en las que sea conveniente pasar un
objeto por referencia. Solo en caso de que pretendas cambiar la instancia
a la que apunta desde el propio método. Creo que jamás he creado un método
que pase objetos por referencia.

Lo digo por que un error común (no se si será tu caso) es pensar que
cuando se pasa un objeto por valor se está duplicando el objeto. Pues no,
solo se copia la referencia.

Juan Carlos Badiola
MVP - C#

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida