Тёмный

Timothy Liu
Подписаться 17 тыс.
Просмотров 29 тыс.
50% 1

Description

Опубликовано:

 

16 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 71   
@joshuazhang6995
@joshuazhang6995 9 лет назад
刘老师, 我等您的高级课程等得孩子都快出生了.... 您倒是赶紧出呀~~~~~ 加油加油~~~
@墨棘
@墨棘 7 лет назад
27:05~30:34 逐字稿   在日常工作中使用委託,一般都是把委託當成方法的參數傳到方法裡面去,為什麼要這樣做呢?這樣做的好處就在於,你寫了一個方法,這個方法呢,有一個委託類型的參數,那我們都知道,委託呢,它封裝了一個方法,然後呢,我們在方法體裡使用傳進來的這個委託,間接的去調用委託封裝的那個方法,這樣呢,就形成了一種動態調用方法的結構,像這種把委託當作參數傳進方法的用法呢,又具體分為兩種,一種叫做模板方法,另外一種叫做回調方法。   所謂模板方法呢,指的就是你寫了一個方法,然後呢,通過傳進來的委託參數"借用"指定的外部方法來產生一個結果,這就相當於在你寫的方法當中呢,有個填空題,這個填空題的空白之處呢,就用傳進來的委託類型的參數進行填補,也就是通過傳進來的委託類型的參數,間接的調用你指定的外部方法,那這個方法呢,一般是具有返回值的,當你拿到這個返回值之後呢,你再繼續執行你所寫的方法後面的邏輯,這也就解釋了為什麼叫做模板方法,就你寫了一個方法,這個方法呢,它是個模板,這個模板裡呢,有一處是不確定的,其餘部分都是你確定好的,那麼這個不確定的部分,就靠你傳進來的委託類型的參數,所包含的這個方法來填補。   委託還有一種常用的使用方式,叫做回調方法,什麼叫做回調方法呢,要想理解它,首先,我們要理解什麼是回調。回調它的英文單詞是Callback,它指的呢是這樣一個場景,比如說有一天我遇到你了,然後呢,我把我的名片雙手奉上,說"上面有我的電話,如果有一天你需要幫助的時候,打這個電話就能找到我。",那我們就知道了,如果有一天,你需要我幫助的時候你就會打這個電話來找我,找我做什麼呢,就相當於調用我的某個功能來幫忙你解決一些問題,如果你一直都不需要我幫忙呢,那麼你就永遠都不會去打這個電話,那現在呢,我和你之間,就構成了一種回調關係,所謂回調關係呢,指的就是某個方法我可以調用它,也可以不用調用它,用得著的時候,我就調用它,用不著的時候呢,我就不調用它,而且呢,回調方法還給了我們了一個機會,讓我們可以動態的選擇後續將被調用的方法,這就相當於,不只是我一個人給你名片,而是很多人都給你名片,當你需要幫助的時候呢,你可以從這一大把名片當中選出一個人來,然後打他的電話向他尋求幫助,這就是我們說的回調方法。   當以回調方法的形式來使用委託的時候呢,我們要做的是把委託類型的參數,傳進主調方法裡面去,被傳進主調方法裡的委託類型的參數呢,它內部會有封裝了一個被回調的方法,也就是我們常說的那個回調方法,主調函數呢,會根據自己的邏輯來決定我是不是調用這個回調方法,那麼整個代碼的邏輯呢,看上去就像一個流水線一樣,一般情況下,我的主調方法會在主要邏輯執行完了之後,決定是不是調用這個回調方法,那麼回調方法呢,一般都會位於主調方法代碼的末尾之處,而且呢,回調方法一般的用處,是來執行一些後續的工作,它構成一個流水線的結構,所以說呢,回調方法一般是沒有返回值的。
@waspec
@waspec 7 лет назад
好用心!
@doransx1239
@doransx1239 7 лет назад
厉害!!赞一个
@javonhsu3862
@javonhsu3862 7 лет назад
看完视频再看了这段话,加深理解,赞!
@施琦-g8c
@施琦-g8c 3 года назад
刘老师的课真的值得听N遍,越听越上头!价值非常高!!
@Eclipse4509channel
@Eclipse4509channel 4 года назад
C#新手一枚,为了学委托搜索到刘老师的视频,把视频从头开始看到现在,讲解非常清楚,特别感谢!
@wf6809
@wf6809 8 месяцев назад
真心感恩。一集把所有我的盲点都讲清楚了(委托、接口的关系,同步异步、进程线程)!
@jasper-ub1jy
@jasper-ub1jy Год назад
重要提示: 在P21中的1:09:47处,异步调用所用的BeginInvoke方法已经不再支持, 需要在头部添加using System.Threading.Tasks; 代码改为Task.Run(() => { action1(); action2(); action3(); });
@vincentyip7528
@vincentyip7528 7 лет назад
整个C#入门讲得很好,受益匪浅
@samyan480
@samyan480 8 лет назад
这段视频反复看了起码10遍以上,个人觉得是初学C#最难懂的概念,老师的表达和例子都是很到位的,值得揣摩。作为初学者,最难理解的问题应该是,为什么要用委托,如果享用某个方法,直接调用(或者实例化)就可以了,为什么还要大费周章的用第三方的委托。老师的说明个人感觉还是不够让“直白”(但是很准确),到是例子揣摩后能有所感悟,让我茅塞顿开的是那个模板。网上找到这段话,感觉很直白:“委托的好处在于,把需要封闭的方法A中,变化/不能封闭的部分改成委托,通过参数的方式传给方法,这样方法A就封闭住了,有新的需求只要求改对应的委托就行了。” 理解了委托,事件的概念到是很好理解,就是不停的在用委托类型,个人理解上面感觉还是乱。。。。。
@samyan480
@samyan480 8 лет назад
+Sam Yein 归根究底,对委托的难理解是源自对面向对象这个概念的不熟悉
@frostchu9586
@frostchu9586 8 лет назад
+Sam Yein 同样表示没理解,准备翻翻别的书是怎么说的,然后边写边体会了,光看还是感觉不够用
@frostchu9586
@frostchu9586 8 лет назад
+Sam Yein 同样表示没理解,准备翻翻别的书是怎么说的,然后边写边体会了,光看还是感觉不够用
@doransx1239
@doransx1239 7 лет назад
才看了第一遍已经云里雾里了- -#,还剩9遍,向你看齐
@xuzhihong137
@xuzhihong137 2 года назад
刘老师,准备这样一个课程,真是下了很大的功夫,费了很多心血。
@fangao9977
@fangao9977 9 лет назад
老师讲的真心好!有好的例子,和经验分享!特别期待老师的高级课程,不行了已经等不及了
@user-fd2uv9lu9i
@user-fd2uv9lu9i 4 года назад
2020年 又跑回來看了...寫遊戲到現在 基本上沒用到自定義委託過... 希望老師可以講一些關於設計模式的部分
@user-fd2uv9lu9i
@user-fd2uv9lu9i 6 лет назад
每次看你這部影片我腦袋都會很熱...,以前是燒腦 理由有三 1.看不習慣自訂義的崁套類 腦子會打結2.英文程度不好 3.基礎不穩
@shiyuyang-ug9fx
@shiyuyang-ug9fx Год назад
刘老师,你在做有意义的事,后面的人会受到启发做其他有意义的事
@胡兴-e8p
@胡兴-e8p 4 года назад
看了两遍,第2次感觉就和第1次不一样了。谢谢老师。
@lishun379
@lishun379 Год назад
好清晰的思路啊,大赞
@voila660
@voila660 9 лет назад
很好。支持刘老师
@user-qb1ig2nx9q
@user-qb1ig2nx9q 10 лет назад
刘老师,你好久没有更新了....好期待您的C#语言入门详解的更新。
@supergogogo
@supergogogo 3 года назад
这是我学过最难的一节课了!加油!常回来看看温故而知新。
@morganzhang1761
@morganzhang1761 Год назад
主要是没有先导课程,所以看起来比较困难
@summersky1000
@summersky1000 3 года назад
感謝大神,獻上膝蓋
@endora6961
@endora6961 6 лет назад
謝謝老師!! 一套工作流程的設計實在很需要委託的功能~
@tinghu9543
@tinghu9543 10 лет назад
刚开始学委托的一般用法时,感觉比以前的内容难度加大了;当一般用法能顺利默写了,委托的高级用法也就容易些了。
@esleader
@esleader 7 лет назад
老師 等您的C#高級詳解拉!! 委託一直是罩門 不知道何時該調用 只知道當需要多執行緒(多線成)時需要調用 需要多看幾次才能體會
@todd8532
@todd8532 4 года назад
第三次回来复习了,这次终于都能看懂了。老师什么时候能出一个完整的项目视频么?可以开会员频道付费观看,即对得起你的付出,也会督促花钱的同学好好抓紧时间学习。
@silong8352
@silong8352 4 года назад
这个视频真的看了好久 感谢!
@erichjk
@erichjk 9 лет назад
感謝老師!!
@gamlty99
@gamlty99 6 лет назад
在WrapProduct这个函数里, 不确定要调用的是制作pizza的方法还是制作玩具车的方法, 于是就设一个委托类参数 getProduct , 将要执行的委托作为引数传给WrapProduct(....), 让他在里面执行, func1是制作pizza的委托 , func2是制作玩具车的委托 Box box1 = wrapFactory.WrapProduct(func1); 这段会在WrapProduct这个函数里执行制作pizza的委托, 传回一个装有pizza的盒子 Box box2 = wrapFactory.WrapProduct(func2); 这段会在WrapProduct这个函数里执行制作玩具车的委托, 传回一个装有玩具车的盒子 如此一来不用写两个函数, 一个WrapProduct函数透过给不同的引数 就可以产出不同的东西
@pierainforest1564
@pierainforest1564 4 года назад
中英语言差异 同步(synchronous):串行 异步(asynchronous):并行
@appleringoo9332
@appleringoo9332 2 года назад
很好
@guanyujiao8645
@guanyujiao8645 Год назад
前几章铺垫类的实例字段和静态字段,本章再看委托作为类创建委托的实例就容易接受
@Ghost223Clifford
@Ghost223Clifford 2 года назад
讲得太好了!!
@tommyhuang6698
@tommyhuang6698 5 лет назад
还是有些云里雾里,有一些思考,贴出来和大家讨论,希望大家指正. 不知道是否可以理解为一种动态的从出口端的反向动态方法调用. 在不使用委托的情况下,即使在实例化类获得了方法后,如果要完成一项任务,也要主动的去调用实例的方法实现生产. 而委托更像是,我接受到一个任务:如需要一个包装好的产品,便反向思考:我需要产品和盒子.那么既然需要产品,我就要进行产品的生产等等...(之前的工序可以再加,如既然需要生产,我就可能需要原料等等) 不是计算机专业,不知道是否实际项目中,会有特别的多的类和方法?就好比一家大厂,他能实现各种各样的功能.但是今天接到了一个订单,就是要生产特定的产品,于是便通过层层委托的方式组织固定生产线生产,从而减少过多的人为指挥. 而老师的开始的魔板例子中,是否是可能工序只有两步,所以对于复杂问题上,委托的作用还展现的稍弱?而后面老师的项目自省中,因为项目的层数较多,委托开始展示威力,然而因为一些的不当的使用,导致弄巧成拙? 不知道这么理解是否有问题? 谢谢!
@toto0805
@toto0805 5 лет назад
Task 好用又方便
@xingzhangzhu7924
@xingzhangzhu7924 Год назад
老师您好,有一个小问题想请教一下老师,请问在33分钟的讲模板方法的是时候,WrapProduct方法里面,为什么不直接传入Product类型的变量作为参数呢?(感觉直接传入Product也可以达到代码复用的效果,有点不太理解传入委托的必要性),谢谢老师解惑~
@raindev1151
@raindev1151 10 лет назад
请问下Mr.Liu,这个课程后面还有更新吗?
@snakebite4033
@snakebite4033 4 года назад
MacOS平台使用 .Net Core 3.1.301 调用 Action 委托的 BeginInvoke方法会报 operation is not supported on this platform 的异常,看来暂时没法对这一小点进行操作了。不知道刘老师什么时候讲异步编程相关的内容,相当期待!
@天生万物以养人
@天生万物以养人 4 года назад
我win10也报错了
@user-pb9sg4fk7q
@user-pb9sg4fk7q 9 лет назад
老师讲的很好,能分享一下PPT 吗,需要消化一下。
@ZZ-jb5xj
@ZZ-jb5xj 4 года назад
老师 你每次举例声明一个类的时候, 有四个方法 然后一下子下拉下去的那个快捷键是什么?? 你打字很快 我看不到
@weilantao4857
@weilantao4857 2 года назад
刘老师讲的太好勒 有没有源码共享下
@ryanstark1869
@ryanstark1869 4 года назад
那这个委托为什么要多此一举多方法进行间接调用呢?
@user-bn4sn8fg9n
@user-bn4sn8fg9n 6 лет назад
这个视频看了两遍了~ 发现老师这个字体越看越好看啊 ~ 有人知道什么字体么 求分享
@waspec
@waspec 6 лет назад
Eurostile
@kingfaluis3987
@kingfaluis3987 4 года назад
老师很遗憾网上没有您的PPT
@gracetan952
@gracetan952 3 года назад
挺难的。
@loveyoimiya2084
@loveyoimiya2084 2 года назад
委託的隱式異步調用在.Net 6已經不能用了哦
@FunnyBaidu
@FunnyBaidu 8 лет назад
我感觉这集例子本身就蛮难理解的,特别是这种写法: class Box { public Product Product{get;set;} } Product本来是一个类,现在是类Box的一种属性,第一次见到这样的属性
@user-fd2uv9lu9i
@user-fd2uv9lu9i 7 лет назад
我也是在那邊看半天.. 居然直接把返回直INT 用BOX取代.... 但最重點的委拖還是搞不董 目前看第六遍了...
@user-fd2uv9lu9i
@user-fd2uv9lu9i 6 лет назад
再回來後看懂了....,其實就是嵌套類 Product不是當成屬性 而是Box這個Class裡面還有一個Class FunnyBaidu Product不是有個 string name{get;set } 嗎?,如果你要在主程式裡面呼叫到他 就是要先實體化 1: Box box=new Box(); 2: box.product.name ="FunnyBaidu"; 你跟我一樣卡在前半段,跟著鑽牛角尖走不出來 如果你還有回來看的話 希望對你有幫助
@dengyuliu5847
@dengyuliu5847 2 года назад
int double这些也都是“类”啊,字段和属性中都可以存在啊,不论是你自己的类还是系统已经带的这些。😀
@grace-yueranyu2024
@grace-yueranyu2024 5 лет назад
这集看完,得消化很久很久,还得重复看才行...一遍基本上蒙圈。
@xhmuzhou6209
@xhmuzhou6209 11 месяцев назад
啊这,一开始没看清,老师这个也抢
@duduebenso
@duduebenso 7 лет назад
原以为看两遍理解了,现在倒好看了好几遍,还到处找书看,似乎有些头绪了。
@waspec
@waspec 7 лет назад
所以,这一周只看这一集嘛。
@duduebenso
@duduebenso 7 лет назад
好像是看懂了,但是要让我自己写出这个逻辑来肯定还是不行。
@mikedu2010
@mikedu2010 7 лет назад
重看都受益不浅,比如 名称空间下委托写法。期待上课详解。
@ooomchooo5494
@ooomchooo5494 6 лет назад
其实委托很好理解,就是把方法打包放在委托里,但是老师这个视频里面的例子太复杂了,导致很多人不明白,应该循序渐进
@waspec
@waspec 6 лет назад
技术是件严肃的事情,用“打包”这种比喻,的确很简单,但“打包”是什么呢?“放”又是一个什么操作呢?真的是“打了个包放进去”吗?不可以此般误导的。
@ooomchooo5494
@ooomchooo5494 6 лет назад
学的不够深,有些计算机专业术语也不太明白,看了一遍,真是云里雾里,就翻下来看评论,结合自己看的书,就随手评论了一下,没想到Mr Liu居然回复我了,窃喜.计算机知识的学习可以用中国的一句古话叫做"仰山铸铜,煮海为盐"来概括,越学越感觉,懂得东西太少,还需多啃书,多看视频
@ZZ-jb5xj
@ZZ-jb5xj 4 года назад
一切皆地址, 我现在走在大街上看到谁都是很多串代码在下雨,,, 我觉得我已脱离现实世界
@周兆基-o1p
@周兆基-o1p 5 лет назад
我怎么看这段代码都像是只递不归,什么时候触发catch,为什么要把main函数的代码隐藏了。
@周兆基-o1p
@周兆基-o1p 5 лет назад
嗯,main方法在后面呢。。。
Далее
C#语言入门详解(020)--事件详解(上)
21:30
How I program C
2:11:32
Просмотров 743 тыс.
C#语言入门详解(023)--什么是类
49:59
Просмотров 10 тыс.
C#语言入门详解(021)--事件详解(中)
1:22:39
SQL速通-003-小查询里有故事
17:10
Просмотров 2,2 тыс.
Think Fast, Talk Smart: Communication Techniques
58:20
Advanced C# - LINQ Tutorial
3:07:24
Просмотров 122 тыс.