C#入門-Day4:資料型別

閱讀時間約 9 分鐘

內建型別

參考文章:https://learn.microsoft.com/zh-tw/dotnet/csharp/language-reference/builtin-types/built-in-types

bool

布林值,表示真或假。範例:bool isValid = true;

byte

8位元的無符號整數,範圍從0到255。範例:byte number = 255;

sbyte

8位元的有符號整數,範圍從-128到127。範例:sbyte number = -128;

char

16位元的Unicode字符。範例:char character = 'A';

decimal

128位元的精確十進位值,範圍從±1.0 x 10^-28 到 ±7.9 x 10^28。範例:decimal percentage = 99.99M;

double

64位元的雙精度浮點數。範例:double pi = 3.141592653589793238;

float

32位元的單精度浮點數。範例:float pi = 3.14F;

int

32位元的有符號整數。範例:int age = 30;

uint

32位元的無符號整數。範例:uint positiveNumber = 3000000000;

nint

一個原生大小的有符號整數。範例:nint number = -500;

nuint

一個原生大小的無符號整數。範例:nuint number = 500;

long

64位元的有符號整數。範例:long bigNumber = 5000000000L;

ulong

64位元的無符號整數。範例:ulong bigPositiveNumber = 10000000000UL;

short

16位元的有符號整數。範例:short number = 32767;

ushort

16位元的無符號整數。範例:ushort number = 65000;

object

為參考型別,您可以將任何型別的值指派給 object 型別的變數。

string

為參考型別,string 類型代表零或多個 Unicode 字元序列。 string 是 System.String 在 .NET 中的別名。雖然 string 是參考型別,但是會定義等號比較運算子 == 和 != 來比較 string 物件的值,而不是參考。 比對值的等式能讓字串等式的測試更為直覺性。

dynamic

為參考型別,dynamic 型別指出使用變數和對其成員的參考,會略過編譯時間型別檢查。 相反地,這些作業會在執行階段解決。

在大多數情況下,dynamic 類型的行為與 object 類型類似。 特別是,任何非 Null 運算式都可轉換成 dynamic 型別。 dynamic 類型與 object 的不同之處在於,包含類別 dynamic 的運算式作業,編譯器不會對其進行解析或類型檢查。

型別轉換

參考文章:https://learn.microsoft.com/zh-tw/dotnet/csharp/programming-guide/types/casting-and-type-conversions

隱含轉換

不需要任何特殊語法,因為轉換一律會成功,而且不會遺失任何數據。 範例包括從較小到較大整數型別的轉換,以及從衍生類別到基底類別的轉換。

// Implicit conversion. A long can
// hold any value an int can hold, and more!
int num = 2147483647;
long bigNum = num;

明確轉換(強型轉換)

明確轉換需要強制型轉運算式。 如果資訊可能會在轉換時遺失,或轉換因其他原因而失敗,則需要轉換。

double x = 1234.7;
int a;
a = (int)x;

自訂型別

您可以使用 struct、class、interface、enum 和 record 建構來建立您自己的自訂型別。 .NET 類別庫本身是自訂型別集合,可供您用於自己的應用程式中。 根據預設,類別庫中最常使用的型別可用於任何 C# 程式中。

元組型別(Tuple)

新增元組

在C#中,我們可以通過宣告一個變數並將其賦值為一個元組來創建新的元組。例如:

var newTuple = (5, "example", 10.5);
(double, int) t1 = (4.5, 3);
(double Sum, int Count) t2 = (4.5, 3);

在這個例子中,我們創建了一個新的元組newTuple,它包含了三個元素:一個整數、一個字符串和一個雙精度浮點數。

修改元組

元組是不可變的,這意味著我們不能修改元組中的元素。一旦元組被創建,它的值就不能被改變。如果我們需要修改元組中的某個值,我們需要創建一個新的元組來取代舊的元組。例如:

var oldTuple = (5, "example", 10.5);
var newTuple = (6, oldTuple.Item2, oldTuple.Item3);

在這個例子中,我們創建了一個新的元組newTuple,它的第一個元素被改為6,其餘元素保持不變。

刪除元組

由於元組是不可變的,我們也無法刪除元組中的元素。如果我們不再需要某個元組,我們可以通過將其設置為null或者讓它超出其作用域來實現“刪除”。例如:

var myTuple = (5, "example", 10.5);
myTuple = null;

在這個例子中,我們將myTuple設置為null,這樣它就不再指向原來的元組。

集合型別(List)

創建 List

List<int> numbers = new List<int>();

添加元素至 List

numbers.Add(1);

修改 List 中的元素

numbers[0] = 2;

在 List 中刪除元素

numbers.Remove(2);
// 或者
numbers.RemoveAt(0);

陣列型別(Array)

創建陣列

下列範例會建立一維陣列、多維陣列和不規則陣列︰

// Declare a single-dimensional array of 5 integers.
int[] array1 = new int[5];

// Declare and set array element values.
int[] array2 = [1, 2, 3, 4, 5, 6];

// Declare a two dimensional array.
int[,] multiDimensionalArray1 = new int[2, 3];

// Declare and set array element values.
int[,] multiDimensionalArray2 = { { 1, 2, 3 }, { 4, 5, 6 } };

// Declare a jagged array.
int[][] jaggedArray = new int[6][];

// Set the values of the first array in the jagged array structure.
jaggedArray[0] = [1, 2, 3, 4];

修改陣列中的元素

numbers[0] = 1;

訪問陣列中的元素

int firstNumber = numbers[0];

請注意,C#中的陣列是固定大小的。這意味著一旦創建了一個陣列,我們就不能添加或刪除元素,也不能更改陣列的大小。如果需要更靈活的數據結構,可以考慮使用List或其他集合類型。

字典型別(Dict)

創建字典

在C#中,我們可以使用Dictionary<TKey, TValue> 類型來創建新的字典。例如:

Dictionary<string, int> dictionary = new Dictionary<string, int>();

訪問字典中的值

我們可以使用鍵(key)來訪問字典中的值。例如:

dictionary["example"] = 10;
int value = dictionary["example"]; // value = 10

添加或修改鍵值對

我們可以使用鍵(key)將新的值添加到字典中,或修改字典中已存在的值。例如:

dictionary["example"] = 20; // 修改鍵值對
dictionary.Add("newExample2", 30); // 新增鍵值對

刪除鍵值對

我們可以使用Remove方法刪除字典中的鍵值對。例如:

dictionary.Remove("example"); // 刪除"example"的鍵值對
    5會員
    60內容數
    日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
    留言0
    查看全部
    發表第一個留言支持創作者!
    Michael楊 的其他內容
    Python入門-Day8:物件導向
    閱讀時間約 14 分鐘
    Python入門-Day9:例外處理
    閱讀時間約 3 分鐘
    Python入門-Day10:模組
    閱讀時間約 2 分鐘
    C#入門-Day3:環境建置
    閱讀時間約 2 分鐘
    你可能也想看
    2024 虛擬實境 x 人因設計 05unity C#語法教學入門_2完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
    Thumbnail
    avatar
    Gavin Hsieh
    2024-04-24
    C計算(一)高中數學主題練習—C計算(一)
    Thumbnail
    avatar
    WilliamP
    2024-04-07
    提升效率!在C#輸入資訊時自動切換中文輸入法的兩種方法在進行資訊輸入的過程中,經常需要在不同語言的文字之間切換輸入法,這可能會影響效率。不過,透過程式設計的方法,我們可以實現在選取到需要輸入中文的輸入框時自動切換到中文輸入法,讓操作更加便利。在這篇文章中,我們將介紹兩種實現自動切換中文輸入法的方法,一種是切換輸入法,另一種是使用IME輸入法。
    Thumbnail
    avatar
    Pochi
    2024-02-02
    C當我的自營工作室客源開始穩定時,C就這樣悄悄走進我的生命裡,至今為止,我和C從來沒有吵架過,連一點點的不愉快、疙瘩甚至懷疑都沒有,對我而言,C的意義只有美好。她總是希望我過得好,我也祝福她永遠快樂。     我的租屋處是一棟由五樓透天隔間的大套房,而我就住在頂樓,旁邊還有一間空房一直沒人承租
    Thumbnail
    avatar
    小倖
    2024-01-12
    [C#] 讀取和寫入JSON文件JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
    Thumbnail
    avatar
    Pochi
    2023-08-14
    【入門級】-C#介紹一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
    Thumbnail
    avatar
    橙果杏
    2023-03-19
    C發洩完情緒之後,內心裡,總會有一種抒坦。是那種放下的感覺,是那種,什麼都好,都可以不重要,只有自己的那種,唯我獨尊的快感。可以不必再在意些什麼,不必再掙扎著去要求些什麼。唯有放寛心了,才能更真實去體驗自己正在經歷的過程。放下些什麼,才能獲得些什麼。 昨晚,C因為工作無法前來陪伴休假的我。經前症候群嚴
    Thumbnail
    avatar
    霍普
    2022-11-17
    Untiy C# | Input 官方的輸入偵測這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
    Thumbnail
    avatar
    瓶裝雪
    2022-07-29
    C語言 輸入、輸出(input/output I/O)前言 輸出 printf 格式控制字元、格式控制符(format char) 前言 輸出控制字元、輸出控制符 轉義字元、轉義符 格式控制字元、格式控制符 輸入 scanf gets gets與scanf差異
    Thumbnail
    avatar
    Caffeine 咖啡因
    2022-07-07