C#極基礎入門觀念整理

Evelyn | Taiwan
5 min readDec 16, 2020

--

純粹記錄下來加深自己的印象用,一直一知半解的使用它實在有點慚愧…

How to use VSCode

建立專案:Terminal→「cd Proj_Path」→「dotnet new console」

執行專案:「dotnet run」

Data Type(型別)

Value Type(實質型別)

傳遞資料時,創建新資料並複製實際數值,值無法為 null。

  1. 整數(括號內不含負數):sbyte(byte)_8→short(ushort)_16→int(uint)_32→long(ulong)_64
  2. 浮點數:float_32→double_64→decmial_64
  3. 字元:char
  4. 布林:bool
  5. 自定義列舉(整數型態): enum Day {Sun, Mon,,,};enum Day : long{,,,} 列舉預設型態為int,可自行宣告成其它「整數」型態,實際使用列舉中變數需先強制轉換型態,如int a = (int)Sun;
  6. 自定義結構(簡化的類別):較單純的類別 (class),底下有相關說明

Reference Type(參考型別)

傳遞資料時,直接傳遞該資料在記憶體的位置,預設值一定是 null

  1. string
  2. array
  3. object
  4. interface
  5. class
  6. dynamic
  7. delegate

命名規則

物件導向 (Object-oriented)

抽象化 (Abstraction)的產物

封裝 (Encapsulation):隱藏某一方法的具體執行步驟,把過程和資料包起來,對資料的操作只能通過已定義的界面。
介面 (Interface):用以定義物件之外觀行為。
實作 (Implementation):用以存放抽象化結果及描述如何達成外觀行為。

繼承 (Inheritance):繼承類別會擁有父類的方法和屬性。子類別較父類別更加具體化,如狗之於動物。

多型 (Polymorphism):定義名稱相同但具不同功能之方法或屬性的類別,須維持方法名稱+參數型別唯一。
靜態 (多載 Overloading):類別中相同名稱但擁有不同數量或型別之參數的方法。
動態 (覆寫Overriding) : 繼承類別重新定義父類之建構子/方法。

static vs. final?

成員 (member) 宣告時若使用關鍵字 static 修飾,該成員變成屬於類別 (class) 而非物件 (object)。

Static Attribute : 類似全域變數
Static Operation : 可不需實例 (new)直接以類別名稱呼叫

成員 (member) 宣告時若使用關鍵字 final 修飾,表示該成員為常數 (constant) 。

final Attribute : 不能重新給值
final Operation : 繼承 後不可被覆寫 (override)

interface vs. abstract vs. virtual vs. override vs. new?

Note

args用來幹麻?

用來接收命令列傳入的參數陣列,非必須,可用於程式中。

#使用方式:args[i]

建構子(constructor)?

建構子跟結構 (struct)或類別 (class)名稱同名,括弧內為參數列 (parameter list)

#不需定義回傳值 (return value)

class vs. struct?

struct:

資料型別 (不可為NULL),繼承自System.ValueType

屬性不能給定初始值,亦不能宣告無參數之預設建構子

無繼承/多型,因此無法設定protected,但可實現介面

使用屬性前無須建實體化 (new)物件 structA x; x.A = 8;

class:

參考型別 (可為NULL),繼承自System.Object

使用屬性前須實體化 (new)物件classA x = new classA(); x.A = 8;

switch-case如果沒有break?

每次執行完 case 區塊都會執行 default 區塊程式。

格式化字串 (format string)?

用來在字串中放變數。

# var 用來設定匿名型態

this() vs. this.?

英文小教室

參數 (parameter) vs. 參數 (argument)?

parameter指方法中所定義須傳入之參數

argument指呼叫方法時實際提供的值

類別(Class) vs. 物件 (object) vs. 實例 (instance)?

class定義了一件事物的抽象特點。包含資料的形式以及對資料的操作,屬性為靜態的。
object為類別的instance,可執行,是屬於動態的。

--

--