各位好,本篇所撰寫的是 10/27 Part2的部分
內容上會介紹到「Property」、「Delegate」和「Event」這兩種程式寫作技巧
不過Unity3D在上會不會使用的平凡,這我就不清楚了,熟悉的人可否講解下使用情況?
=====================================================================
Property
這就是 Property 的寫法,有甚麼不同的嗎?在於方法上的寫作我們多了 get、set 這兩個關鍵字
為何我們要使用Property?這樣寫可以把資料封裝在類別中,語法簡潔且更有彈性
而且如此撰寫的話可以確保資料的安全性及方便性
我們來談談 get、set
get 如同途中的註解敘述,這是把內容值給取出,所以會 return 內容值來使用
set 如同途中的註解敘述,將內容值做修改,修改好的東西會丟到 get 做取出動作
雖然說 set 是對內容值做修改,但其實也可以在 get 將內容值做處理
在這邊提一下,有時各位在撰寫程式上使用內建方法時發現到編譯顯示這是唯讀、唯寫屬性
這是因為那個方法就是用Property來寫作,有下列三種情況
可讀寫:如圖中範例所示 get、set 都存在
唯讀:只有 get 的製作
唯寫:只有 set 的製作
通常大部分看到的是可讀寫或唯讀,唯寫基本上用不太到的樣子(我也想不出該怎用)
最後一提,Property沒有位址,方法的參數不可搭配 ref 或 out 等保留字一起使用
=====================================================================
委派Delegate
宣告委派的寫法,使用 delegate 關鍵字,基本上是寫在 class 類別外的,不過裡面並無程式碼
可以看到在 pr 指派時讓 Powerrrrr 代理 Program 來執行 Yaaaaa 方法
ThreadStart 委派
是前請先準備 using System.Threading; 才能使用 TreadStart 委派
這是委派的一種,可以製成 Tread 物件,為何要這樣做?我們先看下執行的小黑畫面
我們可以看到每次執行的樣子都不一樣,而且還是穿插在一個迴圈內在執行迴圈
由於程式碼的執行是由上至下,故這樣寫可以同步處理不同的程式碼
=====================================================================
事件Event
發行者(Publisher)引發事件來通知所有訂閱者
訂閱者(Subscriber)登記事件時遇呼叫的方法
無名(Anonymous)
使用 delegate 關鍵字取代其名稱,這是宣告在方法的方法
因為沒有名稱,所以別人無法呼叫,適合只用來處理事件
=====================================================================
這邊老實講我實在不太會解說,這裡真的很難聽到都有點暈倒
是說Unity3D好像用這些技巧的時機較小?有誰來解答一下?
最後,C#課程就到此為止,接下去的文章會有別的課程的