No olvides que en las ciencias informáticas un error casi siempre tiene más de una resoluciones, de igual modo nosotros enseñamos lo más óptimo y mejor.
Solución:
¿Por qué un lenguaje nos permitiría tener una no-void método que tiene un bucle infinito y no devuelve nada?
La regla para no-void métodos es cada ruta de código que devuelve debe devolver un valor, y esa regla se cumple en su programa: cero de cero rutas de código que devuelven devuelven un valor. La regla no es “todos los que no sonvoid El método debe tener una ruta de código que devuelva”.
Esto le permite escribir métodos auxiliares como:
IEnumerator IEnumerable.GetEnumerator()
throw new NotImplementedException();
Eso es un no-void método. Eso posee ser un no-void método para satisfacer la interfaz. Pero parece una tontería hacer que esta implementación sea ilegal porque no devuelve nada.
Que su método tiene un punto final inalcanzable debido a un goto
(recuerde, un while(true)
es solo una forma más agradable de escribir goto
) en lugar de un throw
(que es otra forma de goto
) no es relevante.
¿Por qué el compilador ni siquiera advierte sobre la devolución de algo?
Porque el compilador no tiene buena evidencia de que el código es incorrecto. alguien escribió while(true)
y parece probable que la persona que hizo eso supiera lo que estaba haciendo.
¿Dónde puedo leer más sobre el análisis de accesibilidad en C#?
Vea mis artículos sobre el tema, aquí:
ATBG: accesibilidad de facto y de jure
Y también podría considerar leer la especificación de C#.
El compilador de Java es lo suficientemente inteligente como para encontrar el código inalcanzable (el código después de while
lazo)
y desde su inalcanzable, no tiene sentido al agregar un return
declaración allí (después while
extremos)
lo mismo ocurre con condicional if
public int get()
if(someBoolean)
return 10;
else
return 5;
// there is no need of say, return 11 here;
ya que la condición booleana someBoolean
solo puede evaluar a cualquiera true
o false
no hay necesidad de proporcionar un return
explícitamente después if-else
porque ese código es inalcanzabley Java no se queja de ello.
El compilador sabe que el while
bucle nunca dejará de ejecutarse, por lo tanto, el método nunca terminará, por lo tanto, un return
declaración no es necesaria.
Aquí puedes ver las reseñas y valoraciones de los usuarios
Si entiendes que ha resultado de utilidad nuestro artículo, te agradeceríamos que lo compartas con el resto seniors de este modo contrubuyes a dar difusión a esta información.