iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0

由於 C# 是強類型語言,與 JavaScript 不同,
不能像 JavaScript 那樣使用 const number = [] 來宣告變數。
在 C# 中,必須明確指定變數的類型。
例如,陣列應該寫成 int[] number = {5, 4, 3, 2, 1};。
此外,const 在 C# 中只能用來定義編譯時的常量,
不能用來定義陣列或其他引用類型,
而 JavaScript 則允許使用 const 來定義陣列和物件。

陣列由陣列元素組成
-將同類資料放在同一個記憶體中,節省命名的步驟
-透過索引值取得存在記憶體的資訊

宣告一維陣列
變數與陣列的差異,一個變數只能儲存一個資料
陣列能把相同資料集合在一起,稱為陣列元素

產生完整陣列步驟:
1.宣告陣列變數

int[] grade;
int => 告知編譯器要使用的資料型態,取得記憶體空間
[] =>陣列維度,當有一個逗後在方框內時,則為二維陣列,以此類推。
grade =>為陣列名稱

2.配置記憶體
陣列宣告後不代表有記憶體空間,必須以new運算子完成實體化程序,取得記憶體空間

grade = new int[4];
grade =>為陣列名稱
new =>完成實體化程序
int =>資料型別
[4] =>陣列長度

合併1+2寫法
int[] grede = new int[4];

3.設定陣列初始值

grade[2] = 34;
陣列名稱[索引編號] = 初始值;

最終寫法1+2+3

int[] grede = new int[] {78,65,92,85};
資料型別[] 陣列名稱 = new 資料型別[size];

在 C# 中,$ 字符串插值是一種方便的方式來將變數或表達式嵌入到字符串中。當前面的 " 使用了 $ 開頭時,可以在字符串內直接使用 {} 包裹變數或表達式,這樣就不需要再使用 + 號來拼接字符串和變數,讓代碼更簡潔且易讀。

使用 + 來拼接字符串和變數:

Console.WriteLine("grade [" + item + "]=" + grade[item]);

foreach練習:

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args) 
    {
        int[] grade;
        grade = new int[] {78,65,92,85};
        int index = 0; //索引值
        //foreach (資料型別 物件變數 in 集合)
        foreach (int item in grade) {
		        //程式區段敘述
            System.Console.WriteLine($"{index}-{item}");
            index++;
        }
      }
  }
}
string[] cars = {"Volvo", "BMW", "Ford", "Mazda"};
foreach (string i in cars) 
{
  Console.WriteLine(i);
} 

for迴圈練習:

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args) 
    {
        int[] grade;
        grade = new int[] {78,65,92,85};
        int index = 0; //索引值
        //foreach (資料型別 物件變數 in 集合)
        foreach (int item in grade) {
		        //程式區段敘述
            System.Console.WriteLine($"{index}-{item}");
            index++;
        }
        for (int item = 0; item < grade.length; item++)
				{
					Console.WriteLine($"grade [{item}]={}grade[item]")
				}
      }
  }
}


排序與搜尋練習:

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
      //宣告陣列且有值
      int[] number = {56,78,9,354};
      Console.Write("排序前:");
      foreach (int element in number)
      	Console.Write($" {element,3}");
      Array.Sort(number); //遞增排序
      Console.Write("\n排序後:");
      for (int item = 0; item < number.Length; item++)
      Console.Write($" {number[item],3}");
     // Array.Reverse(number); //遞減排序
    }
  }
}

//foreach 迴圈時讀取陣列元素,只要設定物件變數[element]再做輸出即可
//for 迴圈讀取元素後,得有陣列名稱並在括號裡放入所引來輸出

Sort()方法處理兩個欄位:

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
      //宣告陣列且有值
		int[] number = {56,78,3,354};
        string[] name = {"Mary","Judy","Tomas","Molly"};
        Console.Write("\n排序前:\n");
        foreach (int element in number)
        Console.Write($" {element,3}");
        Console.WriteLine();
        foreach (string nameList in name)
        Console.Write($" {nameList,3}");
        
        Array.Sort(number,name);//遞增排序
        Console.Write("\n排序後:\n");
        for (int item1 = 0;item1 < number.Length; item1++)
        Console.Write("{0,6} ", number[item1]);
        Console.WriteLine();
        for (int item2 = 0; item2 < name.Length; item2++)
        Console.Write("{0,6} ", name[item2]);
        Console.WriteLine();
    }
  }
}

IndexOf()方法搜尋陣列元素

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
      //先以IndexOf()方法找出age陣列中符合26歲年齡的索引編號,再利用while迴圈尋找陣列中下一個年齡的人員	
      //宣告陣列且有值
		string[] name = {"Molly","Effie","John","Iron"};
        int[] age = {25,26,26,27,30};
        int index = Array.IndexOf(age,26);
        Console.WriteLine("符合26歲的人:");
        while (index >=0){
        	Console.Write($"{name[index], 6} ");
            //繼續下一筆找
            index = Array.IndexOf(age,26,index+1);
        }
    }
  }
}

以上來源:從零開始學visual C# 2017程式設計、W3Schools、詢問chatGPT
內容有誤的話,請留言或發訊息給我


上一篇
Day1-初學C#之路:30天基礎學習與實作紀錄
下一篇
Day3-C#陣列寫法學習Part2
系列文
初學C#之路:30天基礎學習與實作紀錄10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言