Gabriel,

Todas las asignaciones de objetos que son instancia de clases son por
referencia, las variables cuyo tipo son clase son siempre referencias.
Y si modificas una instancia de una clase recibida por parámetro dentro de
un procedimiento (no hablo de una asiganción) cuando vuelva del
procedimiento esa modificación se verá reflejada en el objeto que se paso
(todo esto sucede aunque se haya especificado ByVal en el argumento).
Si especificamos ByVal en un argumento se pasa una copia de la referencia al
procedimiento, o sea que si asignamos algo a esa referencia, cuando retorne
del procedimiento no se verá afectada la variable que pasamos.
En cambio, si especificamos ByRef en un argumento se pasa una referencia a
la referencia al procedimiento, o sea que si asignamos algo a esa
referencia, cuando retorne del procedimiento se verá reflejada en la
variable que pasamos.

No se si entendió algo de lo que dije, jeje.

Saludos!

On 10/11/07, Gabriel Osorio <[EMAIL PROTECTED]> wrote:
>
> Pablo
>
> No soy muy ducho en VB.NET.
>
> Pregunta: Cuando se asigna una variable en VB.NET, se pasa por valor o por
> referencia?
>
> La idea es que la variable que representa al método "traer" es del tipo
> dataset. Al copiar por valor el dataset devuelto por el SQL, se puede
> liberar la memoria asociada al objeto creado por el SQL sin afectar al
> otro
> objeto.
> Lo que tú planteas es que se hace una asignación por referencia, de manera
> que ambas variables apuntan al mismo objeto en memoria.
>
>
> Pero sigamos con las ideas, que tal esto?
>
> http://www.java2s.com/Code/VB/Data-Structure/Disposecalledwhenweneeddisposin
> g.htm
>
>
> Saludos
>
>
> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Pablo
> A.
> Allois
> Sent: Thursday, October 11, 2007 9:14 AM
> To: [email protected]
> Subject: [puntonet] Preguntas varias
>
> Dos detalles:
> -  La funcion esta devolviendo nothing
> -  Si devolviera el dataset, seria inutilizable despues de ejecutarle un
> dispose
>
> Saludos!
>
> -----Mensaje original-----
> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Gabriel
> Osorio
> Enviado el: Jueves, 11 de Octubre de 2007 11:03 a.m.
> Para: [email protected]
> Asunto: [puntonet] Preguntas varias
>
> Una idea para el punto 1:
>
>         Function traer() as dataset
>                 Dim ds as new dataset
>                 try
>                         ds = CargarDatasetdesdeSQL
>                         traer = ds
>                 catch
>
>                 finally
>                         ds.dispose()
>                         ds = nothing   'Por si las moscas
>                 end try
>         end function
>
>
> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of
> JATEMLIANSKY, Diego
> Sent: Thursday, October 11, 2007 8:43 AM
> To: [email protected]
> Subject: [puntonet] Preguntas varias
>
> Gente como andan ?
> Tengo un par de preguntas para hacerles que nos están sacando el sueño y
> que
> tal vez con algunos tips que nos puedan dar nos puedan orientar un poco
> como
> encararlo.
>
> La arquitectura que tenemos es de FrontEnd en ASP.NET, BackEnd en
> Servicios
> de Windows VB.NET accedidos por Remoting y SQL Server.
> (Todo esto instalado en servidores, no instalamos nada en las PC clientes)
>
> Ahora les paso las preguntas (Todas con respecto a la parte del BackEnd en
> donde tenemos todas las reglas de negocios y el grueso de la
> codificacion):
>
> 1- Liberar memoria:
>         En algunos casos nos esta costando entender como hacer para
> liberar
> memoria.
>         Por un lado encontramos que nos recomiendan hacer los Dispose de
> los
> DataSets una vez utilizados y por otro lado también encontramos algunos
> sites que recomiendan hacer un ds = nothing para liberar la memoria, cual
> es
> la opción mas recomendable?
>
>         Por otro lado, que pasa si un método de nuestro BackEnd hace
> solamente lo siguiente:
>
>         Function traer() as dataset
>         Dim ds as new dataset
>
>         ds = CargarDatasetdesdeSQL
>
>         return ds
>         end function
>
>         Como hacemos para liberar la memoria utilizada por este DataSet
> (que
> en algunos casos trae muchos datos para mostrar en pantalla) si después
> del
> return no podemos hacer mas nada.
>
> 2- Prioridad de procesos:
>         Tenemos varios procesos que son del tipo Batch, o sea, que el
> usuario levanta un archivo y lo vamos procesando.
>         Estos procesos pueden llevar al procesador a consumir mas de lo
> que
> queremos y afectan al funcionamiento optimo del Server. (Ya que en el
> Server
> de BackEnd tenemos varios servicios corriendo y no podemos afectar a los
> otros)
>         Como hacemos para establecer prioridades a estos procesos o
> decirle
> que solamente consuman hasta por Ej. un 30% o que tengan menor prioridad ?
>         O para que el Loop que hacemos con los registros del archivo no se
> lleve todo el procesador.
>         (Estos procesos los tenemos que hacer OnLine, no podemos dejarlos
> como procesos nocturnos)
>
>
> Muchas Gracias.
>
>
>
> AVISO: El presente mensaje y los archivos adjuntos que incluya pueden
> contener información confidencial de uso exclusivo del destinatario
> indicado. Cualquier uso en desacuerdo con su propósito, difusión o
> publicación, total o parcial, se encuentra prohibida. Si recibió este
> mensaje por error, rogamos reenviarlo al emisor y destruir las copias
> impresas o grabadas en su sistema. Las opiniones contenidas, son
> exclusivas
> de su autor y no representan necesariamente la opinión de OMINT S.A. de
> Servicios.
>
>
>
>
>
>
>
>


-- 
Fabián Foos
(msn) [EMAIL PROTECTED]

Responder a