CS21 - Biểu thức lambda, viết và sử dụng biểu thức lambda với delegate trong lập trình C# .NET Core

Поделиться
HTML-код
  • Опубликовано: 8 янв 2025

Комментарии • 29

  • @XuanThuLab
    @XuanThuLab  3 года назад +3

    Các bạn đăng ký theo dõi ủng hô kênh nhé, cảm ơn các bạn ruclips.net/user/xuanthulab

  • @NHGeneral
    @NHGeneral 3 года назад +11

    Sư phụ dạy rất dễ hiểu, một số kênh khác nói rất nhanh và lằng nhằng nhưng cách truyền đạt của sư phụ bình tĩnh và không gây rối, subcribe thôi mọi người!!!

  • @huycuongnguyen902
    @huycuongnguyen902 Год назад +1

    Cám ơn thầy. Bài giảng rất dễ hiểu

  • @ucthinhnguyenluong1455
    @ucthinhnguyenluong1455 Год назад

    anh em đã học callback và arrow func trong js qua học này nhanh cực

  • @dthieu2002
    @dthieu2002 2 года назад +1

    Rất dễ hiểu cảm ơn anh!

  • @ucthinhnguyenluong1455
    @ucthinhnguyenluong1455 Год назад

    Select() giống map trong js nhận vào 1 callback trả về 1 mảng mới sau khi biến đổi

    • @SatLinh0901
      @SatLinh0901 Год назад

      delegate phải như callback ko ban,sao có mấy chỗ kêu delegate là con trỏ

    • @kynguyenphanle6296
      @kynguyenphanle6296 Год назад

      @@SatLinh0901 Theo khái niệm của C++ thì nó là một con trỏ (function pointer), function pointer là một trong những khái niệm nhỏ bên trong chủ đề function object. Có thể hiểu function object nôm na như sau: Nó còn được gọi là Functor, tức là gọi đối tượng như một function, mà không cần phải tạo ra đối tượng từ lớp thông qua quá tải toán tử (). Khái niệm này xuất phát khi người ta đang triển khai với C++ để xây dựng tiền đề cho CallBack và cũng như std::binding,... Hiểu đơn giản rằng nó sẽ tạo ra 1 đối tượng tạm thời và triển khai phương thức cần thiết thông qua đối tượng tạm thời đó ngay tại thời điểm thực thi chương trình.
      Từ đó họ đã xây dựng ra function pointer để nó đúng ra không phải chỉ trỏ tới 1 hàm thông thường, mà rộng hơn là nó đang trỏ tới chính 1 function object, hay chi tiết hơn là có thể trỏ đến một phương thức của 1 đối tượng mà không cần tạo ra 1 đối tượng từ lớp tương ứng. Điều này cũng giống như std::binding trong C++, std::binding sẽ return hay còn có thể nói là được trỏ đến bởi 1 function pointer. Điều này càng khẳng định hơn khi lambdas expression là một function object và function pointer có thể handle cả được lambdas expression.
      Trong C# và cũng như JS thì con trỏ đã được hide đi để giảm thiểu việc gây lú trong lập trình, thay vào đó họ sẽ dùng tham trị và tham chiếu. Như vậy điều này cần phải có sự hình thành của object cụ thể, do đó khi đã khởi tạo delegate và phải xem nó như là 1 lớp. Đã là lớp thì phải có đối tượng cụ thể được sinh ra từ lớp. Vậy mới có thể dùng nó như một tham trị hoặc tham chiếu ở dạng parameters. Theo mình thấy nên xem nó là "con trỏ" trong ngoặc kép để dễ hình dung từ tư duy C++.

  • @tranphatfreelancer5759
    @tranphatfreelancer5759 2 года назад +1

    idol mãi đỉnh

  • @luong87mipec
    @luong87mipec 2 года назад +1

    Rất dễ hiểu, cảm ơn bạn rất nhiều

  • @inventionpm
    @inventionpm Год назад

    Mình vaò trang web... cần hỗ trợ.. gửi yêu cầu nhưng trang web bị lỗi thì phaỉ

  • @nguyencanh8369
    @nguyencanh8369 2 года назад +1

    Thanks

  • @74.nguyenvantung74
    @74.nguyenvantung74 2 года назад +2

    select == map, where == filter trong js có phải không thầy?

  • @lewishoanglong1610
    @lewishoanglong1610 3 года назад +2

    Cảm ơn thầy. Rất dễ hiểu ạ

  • @SonLeO
    @SonLeO 3 года назад

    Thầy giảng rất hay ạ. Cám ơn thầy

  • @volodyachan9333
    @volodyachan9333 3 года назад

    Rất dễ hiểu. Mong a ra thêm nhiều video nữa

  • @caosang1905
    @caosang1905 3 года назад +1

    Cảm ơn anh, hay quá!

  • @itandlife572
    @itandlife572 3 года назад

    Lamda expression này na ná giống callback function trong JS anh nhỉ

    • @trandinhthang5778
      @trandinhthang5778 Год назад

      arrow function chứ

    • @SatLinh0901
      @SatLinh0901 Год назад

      @@trandinhthang5778 delegate phải như callback ko ban,sao có mấy chỗ kêu delegate là con trỏ

    • @alee.van2812
      @alee.van2812 Год назад

      @@SatLinh0901 vầng, là con trỏ trỏ tới phương thức

  • @angVanHuy-tf2rv
    @angVanHuy-tf2rv 2 года назад

    giống callback bên js quá

  • @minhleuc4769
    @minhleuc4769 3 года назад

    anh ơi cho em hỏi chút là mình có thể sử dụng tên của delegate như 1 tên hàm, ví du;
    Funcsum = (int a, int b) => a+b;
    int x = sum.invoke(1,2); console.writeline(x); // chạy được
    console.writeline(sum(1,2)); // vẫn chạy được
    Vậy thì tại sao lại phải sử dụng invoke ạ?

    • @bh4541
      @bh4541 2 года назад

      ví dụ thôi bạn, thầy ví dụ cho bạn hiểu thêm khi gán sum = kiểu delegate (method tính tổng) , rồi dùng sum.invoke gọi ra method gán cho sum để bạn thấy thôi

    • @bh4541
      @bh4541 2 года назад

      sum.invoke(1,2) biến trả về kiểu int thì int x =sum.invoke(1,2), hay console.writeline (sum(1,2)) cái sum (1,2) ở đây khai bao kiểu lamda có biến trả về cũng kiểu int tương đương nhau cả thôi

  • @andreatran4520
    @andreatran4520 3 года назад +1

    :')) . Không biết tại sao mình dùng select bị báo lỗi nữa . Mọi người có thể gợi ý được ko ạ

    • @andreatran4520
      @andreatran4520 3 года назад +1

      à à . Mình quên thêm thư viện :')) . ngáo thật.

    • @desod-vn
      @desod-vn 3 года назад

      @@andreatran4520 Thêm thư viện gì vậy và có extension nào tự động thêm ko ạ ?

  • @supermt4793
    @supermt4793 3 года назад +1

    Thanks ad ạ