這兩年,我在設計課程時改變實作的方式,只給問題不給答案讓學員自己思考實作,最後再給答案來討論,就效果而言,其實蠻不錯的,因為有思考,知識就會著床,唯一較難調適的是我不知道在旁邊閒著要幹嘛,常常忍不住就丟答案出來了,以後我看帶PS4去打恐龍好了。這篇文章就因應這種方式而寫的,分成兩部分,第一部分是給問題,這裡我整理了11個LINQ的問題,聚焦在LINQ To Objects,不包括LINQ To Entity Framework或是其它,第二部分則是答案及探討,基本上我希望在你看第二部分前已經用自己的思考得到答案,接著驗證自己的答案,最後再看第二部分,當然,如果你挑出第二部分的答案有問題,我也是非常歡迎的(敬禮)。值得一提的是,在設計這11道題目時,我刻意地避免為了考倒你而出題,所以沒有刁鑽的問題,也沒有陷阱題。(我多用了兩顆CPU想,所以要提一下),第二部分會在連假結束後貼出。
這11道題目包含了效能、觀念、應用,每個題目都有一些設計巧思(我認為啦),目的在於凸顯LINQ的一些特性,與其說這是問題,倒不如說這是應該有的技巧,因為除了第11題之外,其它都是你應該可以在5分鐘內得到答案,如果對答案有所疑惑,那麼代表著不會貿然寫出這種程式,也代表永遠不會知道這個做法的優缺點。
如下圖,哪個比較快?
有沒有方法可以只跑一次迴圈?效能會比較好嗎?為什麼?
switch的缺點是定型,以後如果AlterType增加,就要回到AlterNow增加case區段,有沒有方法可以省掉這個switch,達到增加AlterType不用修改AlterNow?