[C#/Unity] 為甚麼要用readonly和const
在我們遊戲開發的過程中,其實有很多的變量/字段都可能是需要頻繁使用,但是這些變量/字段的值又是在那個物體/類在實例化的時候、甚至是遊戲一開始時就已經決定好而且之後都不會再進行改變的,那麼我們在這些字段之前加上readonly或const的話,在使用的時候不但會更方便,也會更加安全。說的更準確一點的話,readonly會讓字段使用更安全,const會讓字段使用更方便。
在我們遊戲開發的過程中,其實有很多的變量/字段都可能是需要頻繁使用,但是這些變量/字段的值又是在那個物體/類在實例化的時候、甚至是遊戲一開始時就已經決定好而且之後都不會再進行改變的,那麼我們在這些字段之前加上readonly或const的話,在使用的時候不但會更方便,也會更加安全。說的更準確一點的話,readonly會讓字段使用更安全,const會讓字段使用更方便。
我們常用的int在整型值類型中所佔用的空間是非常龐大的。其實很多時候我們都用不完這麼多的數值空間,我們可能只是聲明一個int speed的變量,它的值最大也不會超過1000,但是只要我們聲明了,對應的空間就會被佔用,也就是說,可以用16-bit解決的問題,我們足足多用了一倍的內存去解決。因此,根據變量的可能取值區間去判斷要用哪種值類型數據,可以有效減少記憶體的消耗。
擴展方法(Extension Methods)是對現有的數據類型實現一些自定義的操作的方法。善用擴展方法能有效地提高開發效率,減少很多冗餘的代碼。
Lambda表達式雖然可以被主動轉換成一個委托類型,但它實際上更多的是一種「使用方式」。所以,Lambda表達式本身其實並不歸屬於任何類型,因此也無法傳入一個接受泛型參數的函數之中。
lambda表達式與一般函數的不同之處,前者更多像是一個臨時的函數,它們基本是不會被重新被調用到的或者找到它們的位置的;而後者更多像是注冊了一個地址一樣,我們可以隨時根據名字找到這個函數的位置。