Gabriel,

Está bien tu ejemplo, o tambien podría ser:

        Function Traer() as DataSet
                try
                        Traer = CargarDatasetdesdeSQL
                catch
                        Traer = New DataSet
                end try
        end function

y despues validar que el dataset no esté vacio.

Con respecto al funcionamiento de los parámetros por valor o por referencia
me parece que concuerdan las dos explicaciones. Si tenés alguna duda decime
que parte específicamente te parece contradictoria.

Saludos.

On 10/11/07, Gabriel Osorio <[EMAIL PROTECTED]> wrote:
>
>  Hola Fabian
>
>
>
> Como que se entiende :-)
>
>
>
> Creo que contestas mi pregunta, pues la asignación estaría haciéndose
> entre objetos que son instancias de clases.  Sin embargo, tu ejemplo sería
> algo así:
>
>
>
> Function Main()
>
>    Dim myDs as Dataset
>
>    If traer(myDs) then
>
>             Hacer algo…
>
>    End if
>
> End function
>
>
>
> Public function traer( byRef ds) as bolean
>
>    try
>
>             ds = LoDeSQL
>
>             traer = true
>
>    catch
>
>       ds = new Dataset()
>
>       traer = false
>
>    end try
>
> end function
>
>
>
>
>
> Otra cosa, lo que dices, parece contradecir a la guía de inicio en punto
> net:
>
> *La nueva opción predeterminada es el paso de argumentos por valor.* En
> Visual Basic 6, si no se especifica explícitamente ByVal o ByRef en la
> declaración de un parámetro, la llamada utiliza ByRef de forma
> predeterminada. En el nuevo Visual Basic .NET, la opción predeterminada es
> ByVal. Esto se aplica tanto a parámetros normales, para los cuales la
> opción predeterminada se puede reemplazar especificando explícitamente
> ByRef, como a parámetros que se pasan a un parámetro *ParamArray*, en el
> que la opción predeterminada no puede reemplazarse. Este cambio se debe a
> que es mucho más habitual utilizar un parámetro únicamente para pasar un
> valor a un procedimiento que para alterar una variable asociada al
> parámetro. Con ByVal como opción predeterminada, se aumenta el rendimiento
> y se disminuye la probabilidad de efectos laterales accidentales.
>
> http://es.gotdotnet.com/quickstart/aspplus/doc/languagecompat.aspx
>
>
>
>
>
> Saludos
>
>
>  ------------------------------
>
> *From:* puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] *On Behalf Of *Fabián
> Foos
> *Sent:* Thursday, October 11, 2007 11:03 AM
> *To:* puntonet@mug.org.ar
> *Subject:* [puntonet] Preguntas varias
>
>
>
> 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: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] On Behalf Of Pablo
> A.
> Allois
> Sent: Thursday, October 11, 2007 9:14 AM
> To: puntonet@mug.org.ar
> 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: puntonet@mug.org.ar [mailto: [EMAIL PROTECTED] En nombre de Gabriel
> Osorio
> Enviado el: Jueves, 11 de Octubre de 2007 11:03 a.m.
> Para: puntonet@mug.org.ar
> 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: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] On Behalf Of
> JATEMLIANSKY, Diego
> Sent: Thursday, October 11, 2007 8:43 AM
> To: puntonet@mug.org.ar
> 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