2009-04-03 31 views
6

En VB.NET en una función booleana si ejecuta una línea de Función de salida, ¿devolverá falsa?¿Salir de la función es falso?

+4

Es por eso que no me gusta VB :) En C# el compilador te obliga a devolver explicity. – cjk

+1

En realidad, el compilador lo dice como una advertencia (y/o visualmente) si no devuelve nada explícitamente, no estoy seguro de si es posible hacerlo obligatorio. –

Respuesta

9

Eso es correcto, con la salvedad de que en VB el nombre de función también puede ser una variable que se devuelve. Si ya has configurado eso en verdadero, volverá a ser verdadero.


más completo, en VB.Net, si tengo una función booleana Foo() definido de este modo:

Public Function Foo() As Boolean 
    '... 

... el cuerpo de esa función tiene una variable implícita también llamado Foo que coincide el tipo de retorno de la función — Boolean en este caso, pero Object si se omite el tipo de devolución (debe usar Option Strict, que requiere un tipo de devolución). Esta variable implícita se inicializa para usar el valor predeterminado para ese tipo.

Si falla en Return un valor de la función, ya sea a través de Exit Function o simplemente llegando al final, esta variable implícita se devuelve en su lugar. Por lo tanto, una función Boolean devolverá False si Exit Function anticipadamente sin hacer otros cambios, porque ese es el valor predeterminado en la variable implícita utilizada con la función. Pero también puede establecer esa variable en True primero si lo desea, y luego Exit Function haría que devuelva True en su lugar.

En estos días las personas no suelen utilizar la variable implícita, pero hay situaciones en las que puede guardar algunas líneas de código sin que cueste nada en términos de claridad.

+1

Posiblemente esto sea una cuestión de claridad, pero esto funciona en VB porque esa variable de salida de función se inicia a falso y sin un retorno explícito es esa variable que se devuelve – annakata

+0

Para ser claro, si tengo una función que devuelve tipo largo, 'Exit Function' devuelve el valor predeterminado (0). Además, si, en mi 'Función Foo() como Long', I' Return Foo', estoy, de hecho, devolviendo '0'. ¿Correcto? Técnicamente podría reemplazar 'Exit Function' con' Return Foo'? – MetalPhoenix

2

Mientras usted no ha establecido que la función a True antes de salir de

3

Independientemente de si lo hace o no (el compilador solo proporciona una advertencia de referencia nula), aún debe devolver explícitamente falso, aunque solo sea para facilitar la lectura.

+0

La respuesta real a la pregunta aún es útil si desea _liminar_ el uso de 'Salir de la Función' sin embargo. – Nyerguds

2

Siempre devuelvo "Return True" o "Return False" para salir de un método en lugar de la instrucción de salida.

Cuestiones relacionadas