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
留言分享你的想法!
avatar-img
電資鼠 - 您的學習好夥伴
10會員
215內容數
在當今數位時代,電資領域人才需求爆發式成長,不論是前端網頁設計、嵌入式開發、人工智慧、物聯網還是軟硬體整合,這些技術都在改變世界。而掌握 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
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 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#還提供豐富的進階學習資源和主題。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News