0. 前言
離職的護理師姊妹們,你們如今都在從事什麼工作呢?我做了一個大膽的決定——跨領域,學習 .Net 開發技術。這個想法在有些人看來或許有些不可思議,但對我而言,做自己熱愛的事情比什麼都重要。人生本就充滿了未知與挑戰,只要勇敢邁出嘗試的第一步,便是一個美好的開端。
第一天的學習相對輕鬆,主要是進行各種概念的學前入門。我深入了解了什麼是 .Net 開發,以及這門技術所能實現的強大功能。我選擇學習的開發語言是 C#,可以藉助 VS(全名 Visual Studio)、VS Code、Rider 等整合開發環境(IDE)進行程式編寫。目前,我已經初步掌握了 Visual Studio 的各項功能以及使用過程中的注意事項。
接下來,我將詳細分享我第二天的學習內容,這些都是後續程式設計運用的重要基礎,主要涵蓋註解符、快速鍵、變數、運算子、型別轉換、跳脫字元等方面。我把自認為比較關鍵的部分記錄如下:
1. 註解符
註解符在程式設計中兼具註銷和解釋的雙重功能。老師曾打趣說,不寫註解就如同「耍流氓」,這足以體現註解的重要性。在 C# 中,有 3 種註解符:
- 單行註解:使用「//」,在其後輸入註解內容,這種註解方式僅對本行有效。例如:
// 這行程式碼的作用是將 Hello World 輸出到主控台
Console.WriteLine("Hello,World!");
- 多行註解:「/要註解的內容/」,可以用來註解多行內容。如下所示:
/*
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
*/
- 文件註解:「///」,多用於解釋類別或方法,其規則相對複雜,目前我還在進一步學習理解當中。
2. 變數的定義與相關知識
2.1 儲存變數語法
定義變數時,首先要宣告變數型別和變數名稱,語法為「變數型別 變數名稱;」,然後再給變數指派值,即「變數名稱 = 值;」。在定義變數時,有兩個關鍵要點:一是要準確確定儲存資料的型別,二是要為變數取一個有意義的名稱,這樣在後續使用中能更清晰地理解其用途。這裡需要注意的是,「=」並非數學意義上的等於,而是指派運算子,作用是將等號右邊的值賦予左邊的變數。另外,宣告並指派變數還有一種簡寫形式:「變數型別 變數名稱 = 值」。例如:
// 先宣告後指派
int num;
num = 10;
// 簡寫形式
int num2 = 20;
2.2 常見資料型別
- 整數型別:
int,只能儲存整數,無法儲存小數。例如:int age = 25; - 小數型別:
double,既能儲存整數,也能儲存小數,小數點後的有效位數為 15-16 位,其取值範圍大於int。例如:double price = 19.99; - 金額型別:
decimal,用於儲存金錢小數,數值後需加上「m」(大小寫均可),如「decimal money = 5000m」。 - 字串型別:
string,用於儲存多個文字,也可儲存空值,值需用英文半角雙引號括起來,如string zsName = "張三",字串可以儲存空string s = ""。需要注意的是,字串和字元不同,字串由多個字元組成。 - 字元型別:
char,用於儲存單個字元,不能儲存空值,值需用英文半角單引號括起來,如「char c = 'a'」。
3. 變數的命名規則
變數名稱要有實際意義,現階段變數名稱應以 26 個英文字母開頭,後面可跟字母、數字或底線。同時,還需要注意以下幾點:
- 關鍵字衝突:變數名稱不能與 C# 系統中的關鍵字(顯示為藍色字體)重複。例如,不能將變數命名為「
int」「class」等。 - 大小寫敏感:在 C# 中,大小寫是敏感的。「
myVariable」和「MyVariable」是兩個不同的變數。 - 範圍內唯一性:同一範圍內,不允許重複定義同名變數。
3.1 命名規範
- Camel 命名規範:變數名稱首單字首字母小寫,其餘單字首字母大寫,常用於變數命名。例如:
int myAge = 28; - Pascal 命名規範:每個單字首字母都大寫,常用於類別或方法命名。例如:
class MyClass { }
4. 指派運算子
「=」為指派運算子,它的作用是將等號右邊的值賦予左邊的變數。由「=」連接的運算式為指派運算式,指派運算式的值就是等號左邊變數的值,如「int number = 10;」。在這個例子中,「number」的值為 10,整個指派運算式「int number = 10」的值也為 10。
5. 「+」號的作用
- 連接:當「
+」號兩邊有一邊是字串時,它起連接作用。例如:string str1 = "Hello"; string str2 = "World"; string result = str1 + " " + str2;,此時「result」的值為「Hello World」。 - 相加:當兩邊都是數字時,執行加法運算。例如:
int num1 = 5; int num2 = 3; int sum = num1 + num2;,「sum」的值為 8。
6. 佔位符
使用佔位符時,先設定佔位符 {0}、{1} 等「挖洞」,再依序傳入參數「填洞」。傳入參數數量需與佔位符數量一致,否則多填無效果,少填會擲出例外,且佔位符依序輸出。例如:
string name = "張三";
int age = 20;
Console.WriteLine("姓名:{0},年齡:{1}", name, age);
7. 跳脫字元
跳脫字元由「\」和特殊字元組成,具有特殊意義:
- \\:表示一個「\」。例如:
string path = "C:\\Program Files"; - \n:表示換行。例如:
Console.WriteLine("第一行\n第二行"); - \":表示一個英文半角雙引號。例如:
string str = "He said, \"Hello!\""; - \t:表示一個 tab 鍵的縮排。例如:
Console.WriteLine("Name\tAge"); - \b:表示一個退格鍵,放在字串兩端無效果。例如:
string str2 = "Hel\blo";,此時「str2」的值為「Helo」。 - \r\n:Windows 系統中表示換行,Windows 不辨識「\n」。例如:
Console.WriteLine("第一行\r\n第二行"); - @ 符號:
- 取消「\」在字元中的跳脫作用,使其僅表示一個「\」。例如:
string path2 = @"C:\Program Files"; - 將字串按原格式輸出。例如:
string str3 = @"This is a multiline string";
- 取消「\」在字元中的跳脫作用,使其僅表示一個「\」。例如:
8. 算術運算子
- 「+」:加法。例如:
int a = 3; int b = 2; int c = a + b;,「c」的值為 5。 - 「-」:減法。例如:
int d = 5; int e = 3; int f = d - e;,「f」的值為 2。 - 「*」:乘法。例如:
int g = 4; int h = 3; int i = g * h;,「i」的值為 12。 - 「/」:除法。例如:
int j = 10; int k = 2; int l = j / k;,「l」的值為 5。 - 「%」:取餘數。例如:
int m = 10; int n = 3; int o = m % n;,「o」的值為 1。
9. 型別轉換
9.1 隱含型別轉換
在 C# 中,要求等號兩邊參與運算的運算元的型別必須一致,如果不一致,滿足下列條件會發生自動型別轉換,也就是隱含型別轉換:
- 兩種型別相容:例如,
int和double相容,因為它們都是數字型別。 - 目標型別大於來源型別:例如,
double的取值範圍大於int,所以可以將int型別的值自動轉換為double型別。
int number = 10;
// int --- double,自動型別轉換
double d = number;
9.2 明確型別轉換
- 兩者型別相相容:例如
int和double是相容的。 - 大的轉成小的:當需要將取值範圍大的型別(如
double)轉換為取值範圍小的型別(如int)時,需要進行明確型別轉換,也稱為強制型別轉換。
語法:(待轉換的型別)要轉換的值
double d = 303.6;
// double---int,強制型別轉換
int n = (int)d;
Console.WriteLine(n);
Console.ReadKey();
在明確型別轉換中,使用「(int) d」是因為要明確告訴編譯器將 d(double 型別)的值強制轉換為 int 型別。這種轉換可能會導致資料精度的遺失,比如上述例子中,303.6 轉換為 int 型別後變為 303,小數部分被捨去。
10. 注意
前面關於 \n 和 \r\n 的描述我有點疑惑,透過問 AI 得到下面的回答:
在 Windows 系統中,通常使用「\r\n」來表示換行,不過在某些情況下,「\n」也能起到換行的效果,但嚴格來說二者是有區別的,因此上述表述不完全準確,以下是具體分析:
- 「\r\n」與「\n」的含義
- 「\r\n」:「\r」是回車(Carriage Return),其作用是將游標移到目前行的開頭;「\n」是換行(Line Feed),它會將游標移到下一行。在 Windows 系統的文字檔案和許多程式語言中,傳統的換行符是「\r\n」,這是從早期的打字機和電傳打字機時代延續下來的習慣,當時需要先回車回到行首,再換行到下一行。
- 「\n」:在 Unix 和 Linux 系統中,通常使用「\n」作為換行符。
- 在不同場景中的表現
- 在 C# 語言中:
Console.WriteLine方法在 Windows 系統下,推薦使用「\r\n」作為換行符,這樣可以確保在 Windows 的命令列環境或其他基於 Windows 的文字處理場景中,換行效果能正確顯示。但實際上,使用「\n」也能實現換行,這是因為Console.WriteLine方法在處理輸出時會對「\n」進行一定的轉換處理,使其在 Windows 環境下也能實現換行顯示。不過,在處理一些嚴格遵循 Windows 換行標準的場景,如寫入文字檔案等,如果使用「\n」可能會導致換行顯示異常。 - 在其他場景中:在 Windows 系統的批次檔(.bat)、文字編輯器等環境中,如果使用「\n」作為換行符,可能不會被正確辨識為換行,而會將「\n」作為普通字元處理,導致無法實現預期的換行效果,只有使用「\r\n」才能正確換行。
- 在 C# 語言中:
總結
今天,我跟著老師進行了程式碼練習,邊聽邊操作,確實加深了對這些知識的理解和記憶。但今天學習的內容較多,還需要更多時間去消化吸收。能自己敲出幾行程式碼,心裡充滿了成就感,不過也有些地方不太明白,比如明確型別轉換中「int n = (int) d;」的具體原理和應用場景,還得再深入研究。未來的學習之路還很長,我會繼續努力,不斷探索 C# 程式設計的奧秘。