C 為什麼這麼難?

時間 2021-05-06 04:36:31

1樓:

關鍵點:

乙個類裡面定義的委託是用來給別的類的方法註冊用的,也就是說呼叫的其實是別人的方法而不是自己的方法。比如刷ui,直接刷ui是不被允許的,把ui物件傳遞到本類這個太傻了。所以用委託掛載ui重新整理的方法。

從另乙個角度:

讓ui中new出來的物件能夠用上ui中的方法最優雅的方式就是 new出物件以後,ui把自己的方法掛在new出來物件的委託上。

所以委託就是函式指標就是c++裡面最喜歡用的callback。搞出委託完全是因為c#禁用指標。

2樓:打玻璃

委託可以讓你把乙個方法作為引數到乙個方法中,這個js中用的特別多,多播委託可以乙個變數表示多個方法,一次呼叫,執行多個方法,多好用

3樓:王韋恩卑鄙

你遇到的問題和觀察者模式為什麼是觀察者模式高度重疊. 我的建議是跳出語言的範疇審視一下觀察者模式解決了什麼問題然後再看csharp的事件委託與 reactive extension 這兩種實現優劣各有哪些參考 http://

如果覺得觀察者模式就很難那麼和語言就是無關的那麼其實要考慮的是個體這個行業是否還有親和性的問題

4樓:

本人資質平庸

學習途徑全是自學

幾次嚴重的卡殼印象深刻

第一次卡在匿名方法那裡

第二次卡在委託那裡

第三次卡在非同步那裡

第三個地方卡了半年

第四個地方卡了半年

所以我認為只是積累不夠

5樓:「已登出」

其實委託文件裡講得很清楚,委託可以模擬為c++裡的函式指標,這樣可能就心裡有底了,然後多播委託,反而我認為是特別好的設計,模擬一下需要訂閱的訊息通訊,就知道這玩意兒有多方便。

6樓:後知後覺

c#上手蠻簡單的,一點都不難。。。但如果學習委託、反射、正規表示式、蘭姆達表示式還是需要動動腦子的。其他的真的不難。。。

7樓:henry

既然你都玩過c++了那就只需要知道委託其實就是型別安全版的函式指標,但C#委託使用了功能完備的類而非簡單的記憶體位址來實現函式指標的功能,並且委託內部還整合了異常處理和多播的功能。

C#編譯器自帶的一系列功能可以防止委託例項引用不合適的函式,當委託例項引用的函式的簽名(返回型別、引數個數、引數型別)和定義委託時的簽名不同就無法編譯並丟擲編譯時錯誤。同時委託內部整合的異常處理功能會在委託沒有引用任何函式而被呼叫時丟擲執行時異常。

另外,多播可是事件驅動模式和併發程式設計的基礎啊。

8樓:Neo Xiao

C#和.net本身一點都不難,或者說是入門一點都不難。嚴格來說就像拋物線,開始很容易,然後需要理解的地方難,當理解透了,後面又很容易了。

通常零基礎7天就可以入門,有基礎的2~3天足夠。然後需要練習,需要實踐,做專案,2年後就達到中等水平。兩年後看個人了,有些人也許一輩子也提公升不到高階水平,大部分人比如我,就徘徊在中等和高等之間。

一旦跨過這個點,無論怎麼更新,換什麼框架都非常容易。

附上我認為的水平表:

入門:語法,資料型別,

中等:類,委託和事件,執行緒,依賴注入

高等:各種框架,設計模式/模型

9樓:杏雨

C sharp並不難所謂難,就是委託方面,委託很多書籍都沒有說明白,實際上Windows系統,精華是,訊息傳遞也就是事件,WINDOWS系統是圍繞著事件來展開的,自從程式語言有了類的概念,就變得越來越抽象了,類是封閉的,既然封閉就需要訊息傳遞,這就出了委託的概念,用委託這個概念怎麼說呢?本人感覺用這個概念不太好,會迷惑很多很多的人,把委託稱之為橋,更妥帖一些,實際上委託就是乙個橋,特別是類與類之間的訊息傳遞,或者叫函式傳遞,或者叫函式間的引數傳遞,都需要委託來傳遞。類是封閉了,但你建立乙個類的時候,CPU排程就會開乙個新的執行緒,但執行緒與執行緒間是封閉的,在它們之間進行訊息傳遞,就是乙個大問題,雖然封裝有很多好處,但執行緒與執行緒之間的引數傳遞又變得困難了,這是學習c#帶來的困難之一。

委託就是解決類與類之間訊息傳遞的方法限於篇幅就不在這裡展開了

10樓:zanxas

你可以理解為往乙個list裡面新增元素,只不過這個list裡面裝的是函式。

執行多播委託就是把list裡的函式掏出來乙個個執行。

方便實現面相切片程式設計。

11樓:wnbot

委託可以理解成函式型別。

這個型別需要你用關鍵字delegate宣告,就像你要用關鍵字class宣告出乙個自定義的型別一樣。

換句話說,

你用類描述乙個物件,用介面描述乙個物件滿足的某種能力或是約束,那用什麼描述乙個函式呢?在c sharp裡面就是委託。

最後,微軟根據函式型別的使用場景,給你預設提供了三個函式型別:Action、Func、Predicate,分別對應無返回值、有返回值、返回值是布林型別的函式型別。

12樓:蒙特內哥羅老雕

委託就是定義乙個函式簽名,保證你傳的函式是符合這個型別的。通常你也可以用已經提供好的 action func eventhandler等委託,而不用自己去新定義乙個委託。

13樓:

如果是覺得在委託和多播委託這裡卡關的話,建議暫時跳過這部分繼續學習。這部分東西的設計目的有很大一部分是特地為event做前置準備的。建議學習後面event,再加上Action和Func這種委託的實際應用。

用熟練了你就發現委託這樣設計的目的是自然而然的。

14樓:

其實C#是很簡單的,對於委託,你可以認為像int、short這樣的型別一樣就可以了。

對於C#而言,事件和委託也算是精華部分了,掌握了這些內容可以說比較入門了。

然後在看一下linq,這個也是比較深奧的部分。

委託在.net中已經整合了好多,像action,func,這些,每個都有不同引數的定義,可以很方便的使用。

對於非同步程式設計也有很好的支援。

相信你學上一周左右的時間,一定會發現C#是如此的簡單。

LOL為什麼這麼難?

餘燼 別玩中路,玩上路,鐵汁。選奧恩。非塔刀不補,線要推進你的塔時候叫打野。這樣等線回推的時候他就到了,和他一起把線推進對方的塔。如此反覆,你家打野舒服了,你也不會死,也不會養爹。團戰叫個羊,衝到對面C位臉上晃悠。仔細感受兵線變化,等你不需要打野,上路沒人能鯊你之後。開始練習壓對面。鍛鍊防gank。...

為什麼戒賭這麼難

曾喜 假如你有工作10年存了100萬。你拿去賭了。乙個小時變成200萬。這時你是什麼心態?你過去辛苦10年賺到的錢現在1小時就賺到了。在驚喜之餘你會變得不平衡,因為贏錢否定了你過去的努力,讓你對你的人生產生了懷疑,找不到努力的意義,你會對你過去堅信的一切都變得不再堅定。緊接著開始患得患失,這樣能賺錢...

藥理為什麼這麼難?

唐沂 我是中國藥科大學的學生,在這裡學習的這段時間裡,我是真的覺得好累 有機無機,物理化學等在學校裡有個梗 你看我有機會嗎 別問,問就是有機不會 反應機理是什麼鬼!一上課老師提問,誰來寫下反應機理,同學們就像是脊椎有問題一樣,全部低著頭 人生啊!被化學的浪潮拍到沙灘上 馬達 真難麼?藥理是藥學生學的...