How to use Yield in programming 🔻- With an example in C#

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ก.ย. 2024

ความคิดเห็น • 14

  • @NetMentor
    @NetMentor  3 ปีที่แล้ว +5

    Blog: www.netmentor.es/Entrada/yield-programacion
    Twitter: twitter.com/NetMentorTW

  • @jlitodelcid326
    @jlitodelcid326 3 ปีที่แล้ว +1

    Buen tutorial. Me ha servido.

  • @sacris89
    @sacris89 3 ปีที่แล้ว +1

    Buenos videos, Felicidades

  • @LuisMorales-nl5dx
    @LuisMorales-nl5dx 3 ปีที่แล้ว +1

    Excelente video amigo! Tu en realidad sabes explicar muy bien.
    Tu no haces cursos en algún tipo de academia online, tipo udemy?

    • @NetMentor
      @NetMentor  3 ปีที่แล้ว +4

      Gracias! no, no tengo ningún curso ni nada en Udemy, la verdad podria, pero no dispongo de tiempo. Tambien pienso que los aspectos básicos están mas que cubiertos con cientos de diferentes cursos, yo tengo lo mismo en yotubue, pero gratis 😁

  • @Jocker88
    @Jocker88 2 ปีที่แล้ว

    Buenas, hay una cosa que no acabo de entender. Pongamos que estoy iterando la lista con yield return, imaginemos que ya tengo lo que quiero y salgo del bucle, ¿Qué ocurre con yield return? según lo que explicas se queda esperando a que se solicite el siguiente elemento. Pero yo ya tengo lo que quiero y el programa ha seguido su flujo de ejecución y quizás en otro punto quiero volver a llamar a ese método para volver a iterar la lista y localizar otros elementos. ¿Volverá donde se quedó parado? ¿El yield return detecta que quien lo llamó ya no le quiere y que como lo abandonó pues le deja y muere?
    Entiendo que sí, ya que como explicas en este vídeo y en el de Linq es como funciona Linq y yo no he tenido ningún problema, pero necesito saber más, ¿Qué hace por debajo? ¿Tiene un semáforo implementado? ¿Si es algún tipo de semáforo cuando detecta que no se le llama le hace un Release/Dispose ? Se me plantean dudas al respecto, llevo 4 días mirando cosas sobre yield y no logro ver por ningún lado como está implementado por detrás de las cortinas.
    Un saludo y perdón por el tostón.

    • @NetMentor
      @NetMentor  2 ปีที่แล้ว +1

      con lo de salir del bucle una vez encuentras el elemento, no estoy seguro de que se pueda; me refiero, yo no recuerdo nada que permita hacer cirtuit breaking dentro de un Ienumerable, mas alla del return de la función y de un "continue" a un bucle padre, (quizá lo haya, simplemente no me viene a la mente) y en ambos casos saldrias del scope del yield return por lo que se haria el dispose. pero de eso no te tienes que preocupar que lo hace el lenguaje. De todas formas puedes ter un if royo if(estoybuscando) yield return; else yield break, eso rompería el bucle.
      y luego sobre como funciona yield por detrás, puedes entender que es magia y ya esta, es mas facil de asimilarlo asi. Lo que hace (si no recuedo mal) a alto nivel seria algo así como hace un snapshot de tu aplicación en ese momento, ejectua lo que tenga que ejecutar con el yield y la aplicación vuelve al estado donde habia hecho el snapshot. No es un snapshot como tal pero creo que así se puede entender mas o menos bien. creo que técnicamente se llama "machine state" o algo similar.
      Un saludo!

  • @alexanderf.andrade9222
    @alexanderf.andrade9222 3 ปีที่แล้ว +1

    Excelente una consulta cómo haces para activar las referencias de código q aparecen encima de los nombres de cada método a través de links en visual studio, antes lo tenía activado pero ya no lo tengo visible :/

    • @NetMentor
      @NetMentor  3 ปีที่แล้ว +1

      Te refieres a intellisense? En opciones -> editores de texto -> c# -> intellisense y ahí puedes habilitarlo

    • @alexanderf.andrade9222
      @alexanderf.andrade9222 3 ปีที่แล้ว +1

      @@NetMentor gracias por tu respuesta, me refería a referencia de métodos de visual studio, arriba de cada método están las referencias, he revisado y no encontré cómo activarlo :/

    • @NetMentor
      @NetMentor  3 ปีที่แล้ว +1

      @@alexanderf.andrade9222 ahhhh vale, ya se, eso se llama codelens, asegurate que tienes Visual studio actualizado a la última versión de 2019 (no está en la comúnity edition de las anteriores) y lo mismo, en opciones -> editor de texto -> todos los lenguajes -> codelens y te activas todo, un saludo.

    • @alexanderf.andrade9222
      @alexanderf.andrade9222 3 ปีที่แล้ว +2

      @@NetMentor gracias, solucionado 😉