(2)從護士到C#開發者-C#入門基礎:變數、運算子與型別轉換

(2)從護士到C#開發者-C#入門基礎:變數、運算子與型別轉換

身為護士的我毅然跨界投身 C# 程式設計學習,在此分享第二天學習內容,涵蓋變數、運算子、逸出字元等關鍵知識要點 。

最後更新 2025/2/22 下午7:20
勇敢的天使
預計閱讀 10 分鐘
分類
分享
專題
從護士到C#開發者
標籤
.NET C# 轉行開發 程式設計

0. 前言

離職的護理師姊妹們,你們如今都在從事什麼工作呢?我做了一個大膽的決定——跨領域,學習 .Net 開發技術。這個想法在有些人看來或許有些不可思議,但對我而言,做自己熱愛的事情比什麼都重要。人生本就充滿了未知與挑戰,只要勇敢邁出嘗試的第一步,便是一個美好的開端。

第一天的學習相對輕鬆,主要是進行各種概念的學前入門。我深入了解了什麼是 .Net 開發,以及這門技術所能實現的強大功能。我選擇學習的開發語言是 C#,可以藉助 VS(全名 Visual Studio)、VS Code、Rider 等整合開發環境(IDE)進行程式編寫。目前,我已經初步掌握了 Visual Studio 的各項功能以及使用過程中的注意事項。

接下來,我將詳細分享我第二天的學習內容,這些都是後續程式設計運用的重要基礎,主要涵蓋註解符、快速鍵、變數、運算子、型別轉換、跳脫字元等方面。我把自認為比較關鍵的部分記錄如下:

1. 註解符

註解符在程式設計中兼具註銷和解釋的雙重功能。老師曾打趣說,不寫註解就如同「耍流氓」,這足以體現註解的重要性。在 C# 中,有 3 種註解符:

  1. 單行註解:使用「//」,在其後輸入註解內容,這種註解方式僅對本行有效。例如:
// 這行程式碼的作用是將 Hello World 輸出到主控台
Console.WriteLine("Hello,World!");
  1. 多行註解:「/要註解的內容/」,可以用來註解多行內容。如下所示:
/*
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
*/
  1. 文件註解:「///」,多用於解釋類別或方法,其規則相對複雜,目前我還在進一步學習理解當中。

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# 中,要求等號兩邊參與運算的運算元的型別必須一致,如果不一致,滿足下列條件會發生自動型別轉換,也就是隱含型別轉換:

  • 兩種型別相容:例如,intdouble 相容,因為它們都是數字型別。
  • 目標型別大於來源型別:例如,double 的取值範圍大於 int,所以可以將 int 型別的值自動轉換為 double 型別。
int number = 10;
// int --- double,自動型別轉換
double d = number;

9.2 明確型別轉換

  • 兩者型別相相容:例如 intdouble 是相容的。
  • 大的轉成小的:當需要將取值範圍大的型別(如 double)轉換為取值範圍小的型別(如 int)時,需要進行明確型別轉換,也稱為強制型別轉換。
    語法(待轉換的型別)要轉換的值
double d = 303.6;
// double---int,強制型別轉換
int n = (int)d;
Console.WriteLine(n);
Console.ReadKey();

在明確型別轉換中,使用「(int) d」是因為要明確告訴編譯器將 ddouble 型別)的值強制轉換為 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」才能正確換行。

總結

今天,我跟著老師進行了程式碼練習,邊聽邊操作,確實加深了對這些知識的理解和記憶。但今天學習的內容較多,還需要更多時間去消化吸收。能自己敲出幾行程式碼,心裡充滿了成就感,不過也有些地方不太明白,比如明確型別轉換中「int n = (int) d;」的具體原理和應用場景,還得再深入研究。未來的學習之路還很長,我會繼續努力,不斷探索 C# 程式設計的奧秘。

繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2025/8/13

推薦一款高效能狀態機管理解決方案

在實際軟體開發中,尤其是工業軟體,每一款設備都有複雜的狀態以及狀態之間的切換的功能需求,在這種情況下,如何管理狀態以及狀態之間切換,和對應狀態下的功能控制,成為非常重要的一個問題。

繼續閱讀
同分類 / 同標籤 2025/3/18

(7)從護士到C#開發者--物件導向程式設計基礎

作為一名從護理行業轉行的程式設計師,我將分享如何透過醫護工作經驗來理解物件導向程式設計的概念。本文將介紹類別、物件、屬性、方法等物件導向的核心概念,並結合醫療保健領域的實例來加深理解。

繼續閱讀