C#極基礎入門觀念整理
純粹記錄下來加深自己的印象用,一直一知半解的使用它實在有點慚愧…
How to use VSCode
建立專案:Terminal→「cd Proj_Path」→「dotnet new console」
執行專案:「dotnet run」
Data Type(型別)
Value Type(實質型別)
傳遞資料時,創建新資料並複製實際數值,值無法為 null。
- 整數(括號內不含負數):sbyte(byte)_8→short(ushort)_16→int(uint)_32→long(ulong)_64
- 浮點數:float_32→double_64→decmial_64
- 字元:char
- 布林:bool
- 自定義列舉(整數型態): enum Day {Sun, Mon,,,};enum Day : long{,,,} 列舉預設型態為int,可自行宣告成其它「整數」型態,實際使用列舉中變數需先強制轉換型態,如int a = (int)Sun;
- 自定義結構(簡化的類別):較單純的類別 (class),底下有相關說明
Reference Type(參考型別)
傳遞資料時,直接傳遞該資料在記憶體的位置,預設值一定是 null。
- string
- array
- object
- interface
- class
- dynamic
- 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,可執行,是屬於動態的。