1. 程式人生 > >C#基礎學習需要注意的幾個知識點

C#基礎學習需要注意的幾個知識點

在學習Unity之前,相信我們都要經歷C#程式語言的學習,大家都知道在C#是一門面向物件的程式語言,具有封裝繼承多型的一些特點,這些知識點淺學並不難,但是當我們在Unity的道路上越走越遠的時候,我們需要去看很多的外掛原始碼,看懂並且能學會去做一些簡單的修改,這時,我們會發現,在這些外掛的原始碼中有大量的委託,繼承,多型,過載等,若我們的C#學的並不是非常精通,將會給我們帶來很大的難題。所以,我們可能在剛接觸Unity時用MonoBehavior類中封裝的方法可以完成很多的功能,但是之後在深入的學習中比較乏力,然後C#的重要性將慢慢的體現出來。這裡我將對一些C#基礎中容易遺忘或者比較細的地方記錄一下,防止以後的自己會忘記,並希望同時可以為初學Unity的人帶來一些幫助。

由簡入深

1.char兩個位元組,不同於其他語言的原因:

因為,在C#中char型別存的是unicode碼,可以表示的字元比C語言等語言都多,一個位元組不能全部存入,所以就多了一個位元組

2.switch後面括號中只能是整形表示式麼?

不,字串、列舉等也可以

3.迴圈,三種迴圈可以相互轉換,本質相同,用哪個視情況而定

4.隨機值,arc4random() % (max - min + 1) + min

5.foreach中的迭代變數不能寫,只能讀

6.結構體與類的區別

結構體是值型別,而類是引用型別,當我們需要大量的例項化物件時,用結構體更高效,比如Unity中的Vector3

7.屬性中的get與set至少有一個為public的,否則會報錯

8.當存在繼承時,例項化子類物件,會先呼叫父類構造方法,然後呼叫子類的構造方法

9.子類不繼承父類的構造方法,但是由於例項化子類物件時會呼叫父類的構造方法,所以,當父類不存在無參構造方法時,需要,在子類的構造方法後面用":Base()"呼叫一下父類的構造方法

10.重寫(override)與替換(new)的區別

重寫是多型的體現,而替換不是,重寫可以讓父類物件呼叫子類方法(例項化時,父類物件 = new 子類構造),而重寫,只能各調各的。

11.stringBuilder的實際作用比string大

12.單例是個很好的模式,用lock可以進行雙重鎖定,之後會測試及詳細說明,在Unity中的使用也會說明

13.委託與事件在unity中常用於寫監聽事件,最常見的,就是Unity中的Button與AddListener等操作

這次就先簡單寫這麼多,沒有很深入的去寫,只是寫完可以對自己進行提醒注意,大家有好的建議,可以一起交流大笑

相關推薦

C#基礎學習需要注意知識點

在學習Unity之前,相信我們都要經歷C#程式語言的學習,大家都知道在C#是一門面向物件的程式語言,具有封裝繼承多型的一些特點,這些知識點淺學並不難,但是當我們在Unity的道路上越走越遠的時候,我

基礎學習Python的知識點

第一 學習方向:python應用方向很多,必須明確學習方向想 全棧開發:就是web應用開發,是用來寫網站後臺的資料分析:就是做大資料分析的,資料量級起碼是千萬級別的,做的是大資料分析網路爬蟲:其實屬於資料分析的部分,就是獲取資料來源的方式。不管是阿拉伯資料還是說字串,都是資料的一種。經常試試需要

C++/GDI+ 學習筆記(二)——例子

GDI+的Pen類還提供SetDashStyle和SetDashPattern方法來設定畫筆的預定義風格和自定義型別。其中,預定義風格可以有:DashStyleSolid(實線)、DashStyleDash(虛線)、DashStyleDot(點線)、DashStyleDashDot(點劃線)、DashStyl

學習大資料掌握這知識點,會少走很多彎路

說到初識Hadoop,這章我們一起來聊聊,更高效的WordCount。     在聊之前我多說兩句,大家既然想學習大資料,那麼就請你放棄你自己認為的自學,或者是看幾本書就能學會的念頭,好好的一步一步的系統的去學習才是王道,畢竟學完之後我們是用來創造價值的,所以一

C#基礎學習-交換兩數字的值

    //有兩個數字10、20,編寫程式交換兩個數字的值         int num1 = 10;             int num2 = 20;             #region 第一種             int temp = num1 + nu

學習Java分為階段,分別是什麽?

java hiberna 我不 參加 file類 循環 堆外 read 網絡 多年前我自學的時候是很茫然,上網問問題,總是一堆外行的人說很難啊,你需要這樣需要那樣,不然就是,一堆人說一些空話,多看多寫,買好書,我很無語,除了這些就沒有自己的一些想法嗎? 首先很多人認為學JA

Spring需要關鍵配置文件

eba lib name extc gmv 配置 apach apache logs springmvc-servlet.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="

C++關於鏈表的常見面試題

ext int 偏移 倒數 list tail 創建 null lse 1、從尾到頭打印鏈表 2、刪除鏈表節點 3、鏈表中倒數第K個節點 4、反轉鏈表 5、合並兩個排序的鏈表 6、兩個鏈表的第一個公共節點 最基本的先上,往鏈表的末尾添加節點: ListNode *AddTo

c#基礎學習(0630)之面向對象總習

訪問 返回值 vat 修飾符 基礎 自己 spa 函數 style 面向對象總習 1、封裝、繼承、多態 ****字段:存儲數據,訪問修飾符應該設置為private私有的 ****屬性:保護字段,對字段的取值和賦值的限定 ****new關鍵字: 1、在堆中開辟空間(引用類型的

c#基礎學習(0708)之靜態類

類名 實例 需要 包含 基礎 類型 自動調用 一次 tel 再靜態類中,所包含的所有成員都是“靜態成員” 不是所有的靜態成員都必須卸載靜態類中 靜態成員時屬於“類”的,不是屬於具體“對象”的,所以訪問靜態成員的時候不能通過對象來訪問(對象。屬性名),只能通過“類名”來直接訪

c#基礎學習(0724)之可變參數、ref和out

col ram test 不為 外部 rri money 改變 end params可變參數,無論有幾個參數,必須出現在參數列表的最後,可以為可變參數直接傳遞一個對應類型的數組 #region 可變參數 //1.如果方法有多個參數,可變參數可以作為最後一個參數 //2.可

機器學習中的概念的關系

概念 clas ear into deep 大數據 多倫多 有監督 hmm 目前, 機器學習主要由以下三條主線進行發展: graph LR subgraph 三代神經網絡 A[1 線性分類器] ==> B[2 非線性分類器] B ==SVM==> C[3 深度學

C++基礎學習之物件和類(7)

this指標 有時方法可能涉及到兩個物件,這種情況下需要用到this指標。比如Stock類中有一個方法是比較兩個物件的價格值,那麼方法定義如下: const Stock & topval(const Stock & s) const; const都是為了表示不對

C++基礎學習之物件和類(6)

物件和類 主要內容: 面向物件程式設計與過程性程式設計 類的定義和實現 公有類和私有類 類的資料成員 類方法 建立和使用類物件 類的建構函式和解構函式 const成員函式 this指標 建立物件陣列 類作用域

C++基礎學習之記憶體模型與名稱空間(5)

單獨編譯 將程式分為三個部分: 標頭檔案:包含結構宣告和使用這些結構的函式的原型。 原始碼檔案:包含與結構有關的函式的程式碼。 原始碼檔案:包含呼叫與結構相關的函式的程式碼。 一般儘量避免將函式定義或變數宣告放到標頭檔案中,防止出現重複定義的問題。 標頭

C++基礎學習之程式設計模組(4)

函式和二維陣列 在C++中,二維陣列的定義完全與一維陣列不同: int data[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {2, 4, 6, 8}}; data不能當作是一維陣列的指標然後去訪問12個元素,data[0~2]每個都是一個一維陣列

C++基礎學習(1)

C++的字尾名為.C或者.cc,cpp,cxx,c++等很多型別。 與c的輸入輸出不同的是c++用cin和cout。用法如下: #include <iostream> int main() { using namespace std; cout << "Com

C++基礎學習之複合型別(2)

複合型別 陣列 字串 string類 結構 共用體 列舉 指標(new delete管理動態記憶體) 動態陣列,動態結構 vector和array類 1.陣列 陣列宣告格式: typeName arrayName[ar

學些 Python 中的知識點

之前只是簡單會用,現在重新按照官網的 Tutorial 來學 python 中一切變數都是引用(指標) 最簡單的例子: def func(ll): ll.append(42) ll = [1, 2] func(ll) print(str(ll)) #輸出 [1, 2, 42] 雖然函式傳參

JavaWeb基礎總結之Js經典的小案例

 (1)動態顯示當前系統時間 <body> <p>當前時間:<span id="times"></span></p> </body> <script> function get(){