C#入門指南: 一文快速入門C#_2

更新 發佈閱讀 17 分鐘

條件敘述

常見的條件敘述包括:

  1. if 敘述
  2. if-else 敘述
  3. else if 敘述
  4. switch 敘述
  5. 三元運算子(Ternary Operator)

if 敘述

用於在條件為 true 時執行一段程式碼。

語法:

if (條件)
{
// 條件為 true 時執行的程式碼
}

範例:

int number = 10;
if (number > 5)
{
System.Console.WriteLine("Number is greater than 5.");
}

if-else 敘述

用於在條件為 true 時執行一段程式碼,否則執行另一段程式碼。

語法:

if (條件)
{
// 條件為 true 時執行的程式碼
}
else
{
// 條件為 false 時執行的程式碼
}

範例:

int number = 3;
if (number > 5)
{
System.Console.WriteLine("Number is greater than 5.");
}
else
{
System.Console.WriteLine("Number is less than or equal to 5.");
}

else if 敘述

用於檢查多個條件,並執行第一個為 true 的條件對應的程式碼。

語法:

if (條件1)
{
// 條件1為 true 時執行的程式碼
}
else if (條件2)
{
// 條件2為 true 時執行的程式碼
}
else
{
// 所有條件均為 false 時執行的程式碼
}

範例:

int number = 7;
if (number > 10)
{
System.Console.WriteLine("Number is greater than 10.");
}
else if (number > 5)
{
System.Console.WriteLine("Number is greater than 5 but less than or equal to 10.");
}
else
{
System.Console.WriteLine("Number is less than or equal to 5.");
}

switch 敘述

用於根據變數的值來執行不同的程式碼區塊。

語法:

switch (變數)
{
case 值1:
// 當變數等於值1時執行的程式碼
break;
case 值2:
// 當變數等於值2時執行的程式碼
break;
default:
// 當變數不等於任何 case 值時執行的程式碼
break;
}

範例:

int day = 3;
switch (day)
{
case 1:
System.Console.WriteLine("Monday");
break;
case 2:
System.Console.WriteLine("Tuesday");
break;
case 3:
System.Console.WriteLine("Wednesday");
break;
default:
System.Console.WriteLine("Invalid day");
break;
}

三元運算子(Ternary Operator)

三元運算子是一種簡化的條件敘述,用於根據條件選擇兩個值之一。

語法:

變數 = (條件) ?1 :2;
  • 如果條件為 true,則回傳 值1
  • 如果條件為 false,則回傳 值2

範例:

int number = 10;
string result = (number > 5) ? "Greater than 5" : "Less than or equal to 5";
Console.WriteLine(result); // 輸出:Greater than 5

模式匹配

從 C# 更高版本 開始,switch 敘述支援模式匹配,可以根據型別或條件來執行不同的程式碼。

範例:

object obj = "Hello";
switch (obj)
{
case int i:
System.Console.WriteLine($"It's an integer: {i}");
break;
case string s:
System.Console.WriteLine($"It's a string: {s}");
break;
default:
System.Console.WriteLine("Unknown type");
break;
}

when 關鍵字

在 switch 敘述中,可以使用 when 關鍵字來進一步過濾條件。

範例:

int number = 15;
switch (number)
{
case int n when n > 10:
System.Console.WriteLine("Number is greater than 10");
break;
case int n when n <= 10:
System.Console.WriteLine("Number is less than or equal to 10");
break;
}

陣列

基本觀念

C# 中的陣列(Array)是一種用來儲存多個相同類型資料的資料結構。

陣列宣告時需指定陣列的類型和大小。語法如下:

type[] arrayName;

例如,宣告一個儲存 int 類型資料的陣列:

int[] numbers;

陣列可以在宣告時初始化,並為每個元素指定初始值。

int[] numbers = {1, 2, 3, 4, 5};
  • 這樣的初始化會創建一個長度為5的陣列,並將元素依次設置為1, 2, 3, 4, 5。

指定陣列大小後再初始化(動態初始化):

int[] numbers = new int[5]; // 陣列大小為 5,預設所有元素為 0

陣列的元素是按索引存取的,C# 中的陣列索引是從0開始的。

int[] numbers = {1, 2, 3, 4, 5};
System.Console.WriteLine(numbers[0]); // 輸出:1
System.Console.WriteLine(numbers[4]); // 輸出:5

陣列中的元素是可以修改的,只要索引有效,就可以直接修改對應位置的值。

numbers[2] = 10; // 將第3個元素改為 10
System.Console.WriteLine(numbers[2]); // 輸出:10

C# 提供了 Length 屬性來獲取陣列的大小,即陣列中元素的數量。

int[] numbers = {1, 2, 3, 4, 5};
System.Console.WriteLine(numbers.Length); // 輸出:5

C# 支援多維陣列,常見的有二維陣列

int[,] matrix = new int[3, 3]; // 宣告一個 3x3 的二維陣列

或者,直接用初始化資料來創建:

int[,] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};

訪問二維陣列元素:

System.Console.WriteLine(matrix[0, 0]); // 輸出:1
System.Console.WriteLine(matrix[2, 2]); // 輸出:9

通常我們會使用 forforeach 迴圈來遍歷陣列的元素。

  • 使用 for 迴圈:
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.Length; i++)
{
System.Console.WriteLine(numbers[i]);
}
  • 使用 foreach 迴圈:
int[] numbers = {1, 2, 3, 4, 5};
foreach (int number in numbers)
{
System.Console.WriteLine(number);
}

陣列的其他操作

陣列排序:

C# 提供了 Array.Sort() 方法來對陣列進行排序。

int[] numbers = {5, 3, 8, 1, 2};
System.Array.Sort(numbers);
foreach (int number in numbers)
{
System.Console.WriteLine(number); // 輸出:1 2 3 5 8
}

陣列反轉:

使用 Array.Reverse() 可以反轉陣列。

int[] numbers = {5, 3, 8, 1, 2};
System.Array.Reverse(numbers);
foreach (int number in numbers)
{
System.Console.WriteLine(number); // 輸出:8 5 3 2 1
}

理解陣列的基本用法是學習 C# 的基礎之一,對於處理和管理大量資料非常有用。


迴圈控制

基本觀念

總而言之,迴圈控制(Loop Control)用於重複執行一段程式碼,直到滿足特定條件為止。我們仔細觀察一下各種迴圈的結構。

for 迴圈用於在已知迴圈次數的情況下執行一段程式碼。

語法:

for (初始化; 條件; 迭代)
{
// 迴圈主體
}

範例:

for (int i = 0; i < 5; i++)
{
System.Console.WriteLine("i = " + i);
}

while 迴圈用於在條件為 true 時重複執行一段程式碼。

語法:

while (條件)
{
// 迴圈主體
}

範例:

int i = 0;
while (i < 5)
{
System.Console.WriteLine("i = " + i);
i++;
}

do-while 迴圈與 while 迴圈類似,但會先執行一次迴圈主體,再檢查條件。

語法:

do
{
// 迴圈主體
} while (條件);

範例:

int i = 0;
do
{
System.Console.WriteLine("i = " + i);
i++;
} while (i < 5);

搭配關鍵字

在迴圈中,可以使用以下關鍵字來控制迴圈的執行流程:

  • break用於立即終止迴圈。
for (int i = 0; i < 10; i++)
{
if (i == 5)
{
break; // 當 i 等於 5 時終止迴圈
}
System.Console.WriteLine("i = " + i);
}
  • continue用於跳過當前迴圈,直接進入下一次迴圈。
for (int i = 0; i < 5; i++)
{
if (i == 2)
{
continue; // 跳過 i 等於 2 的情況
}
System.Console.WriteLine("i = " + i);
}
  • return直接返回,終止迴圈。
for (int i = 0; i < 5; i++)
{
if (i == 3)
{
return; // 當 i 等於 3 時返回
}
System.Console.WriteLine("i = " + i);
}

巢狀迴圈

即在一個迴圈中嵌套另一個迴圈,常用於處理多維資料結構(如二維陣列)。

這邊使用陣列來搭配使用:

  • for 迴圈可以精確控制陣列中行和列的索引。
for (int i = 0; i < 列數; i++) // 外層迴圈:控制列
{
for (int j = 0; j < 行數; j++) // 內層迴圈:控制行
{
// 存取 array[i, j]
}
}

範例:

int[,] array = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

for (int i = 0; i < 3; i++) // 3 列
{
for (int j = 0; j < 4; j++) // 4 行
{
System.Console.Write(array[i, j] + " ");
}
System.Console.WriteLine(); // 每一列中的每一行都輸出過後,執行換行
}
  • foreach 迴圈可以簡化遍歷過程,但無法直接存取行和列的索引。
int[,] array = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};

foreach (int element in array)
{
System.Console.Write(element + " ");
}
  • 雖說是二維陣列,不過要知道,在記憶體中,他們就只是連續的記憶空間,每一個空間用來存放數值。

最後,迴圈有一種無窮迴圈的情況,通常需要透過 break 或 return 來終止。

while (true)
{
System.Console.WriteLine("This is an infinite loop!");
break; // 終止迴圈
}

字串方法

我們將針對以下幾種輔助方法的使用作簡單介紹:

  • Split()Join()

Split

將字串按指定分隔符分割成陣列。

string[] words = "apple,banana,cherry".Split(','); // ["apple", "banana", "cherry"]

Join

將陣列或集合的元素組合成單一字串。

string combined = string.Join(", ", new string[] { "apple", "banana", "cherry" });
// "apple, banana, cherry"

ToCharArray()

將字串轉換為字符陣列,以便對字符進行逐一操作。


綜合示範:

string pangram = "The man has a dog";

// Step 1: 使用 `Split` 方法將原字串按照空白字符拆分成單詞,並將結果儲存在 `message` 陣列中
string[] message = pangram.Split(' ');

// Step 2: 創建一個新的字串陣列 `newMessage`,其長度與 `message` 相同,用於存儲反轉後的單詞
string[] newMessage = new string[message.Length];

// Step 3: 使用 `for` 迴圈遍歷每個單詞
for (int i = 0; i < message.Length; i++)
{
// 將當前的單詞轉換為字符陣列
char[] letters = message[i].ToCharArray();

// 使用 `Array.Reverse` 方法反轉字符陣列
Array.Reverse(letters);

// 將反轉後的字符陣列轉換回字串,並將其儲存回 `newMessage` 陣列中
newMessage[i] = new string(letters);
}

// Step 4: 使用 `String.Join` 方法將反轉後的單詞重新組合成一個字串,並用空格分隔
string result = String.Join(" ", newMessage);

// 輸出最終結果
Console.WriteLine(result);

/* 輸出
ehT nam sah a god
*/
  • Array.Reverse():反轉陣列中的元素,通常用來反轉字符陣列或數字陣列。

更多的用法會寫在補充觀念那邊,不過也沒辦法囊括所有用法,所以讀者要知道,掌握最基本的用法已經很足夠,其餘的情況都可以透過 網路查詢 來獲得解答。

留言
avatar-img
電資鼠 - 您的學習好夥伴
19會員
242內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 C/C++、Python、數位邏輯、電路學與嵌入式開發等大學電資領域的課程,正是進入這個高薪、高需求產業的關鍵!
2025/04/01
本系列最後一個主題,來淺談多執行緒。 在C#中,多執行緒(Multithreading) 是一種讓程式能夠同時執行多個任務的技術。透過多執行緒,你可以提高應用程式的效能和回應速度,特別是在需要處理多個獨立任務或長時間運算的情況下。 本章節會在觀念與實作上取得平衡,讓讀者了解其概念與使用方法。
2025/04/01
本系列最後一個主題,來淺談多執行緒。 在C#中,多執行緒(Multithreading) 是一種讓程式能夠同時執行多個任務的技術。透過多執行緒,你可以提高應用程式的效能和回應速度,特別是在需要處理多個獨立任務或長時間運算的情況下。 本章節會在觀念與實作上取得平衡,讓讀者了解其概念與使用方法。
2025/04/01
在C#中,命名空間(Namespace) 是一種用於組織程式碼的機制,它可以將相關的類別、介面、結構、列舉等類型組織在一起,避免名稱衝突,並提高程式碼的可讀性和可維護性。本章節不會講太多、太深入,只是簡單示範其知識與用法。
2025/04/01
在C#中,命名空間(Namespace) 是一種用於組織程式碼的機制,它可以將相關的類別、介面、結構、列舉等類型組織在一起,避免名稱衝突,並提高程式碼的可讀性和可維護性。本章節不會講太多、太深入,只是簡單示範其知識與用法。
2025/04/01
類別(Class) 是一種用來描述物件(Object)特徵與行為的藍圖或模板。物件則是依據類別建立的實例(Instance)。換句話說,類別就像「設計圖」,而物件是根據設計圖打造出來的「實體」。 本章節我盡可能濃縮有關C#類別的相關知識,以系統性、連貫性的講解,讓讀者有效學習。
2025/04/01
類別(Class) 是一種用來描述物件(Object)特徵與行為的藍圖或模板。物件則是依據類別建立的實例(Instance)。換句話說,類別就像「設計圖」,而物件是根據設計圖打造出來的「實體」。 本章節我盡可能濃縮有關C#類別的相關知識,以系統性、連貫性的講解,讓讀者有效學習。
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本章節的目的是讓讀者瞭解C#的物件導向特性,包括類別、繼承、多型、封裝等基本概念,以及介面、抽象類別、靜態類別等進階主題。此外,本章節也將介紹如何使用列舉、委派、Lambda表達式、泛型及反射,這些都是C#中常見的強大功能。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
本文是C#入門教程的一部分,涵蓋了流程控制的各種語句與迴圈。這包括if、else if和else語句,三元運算子,switch語句,以及for、foreach和while迴圈。文中還介紹了如何在迴圈中使用break、continue、return和goto語句。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News