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"的鍵值對
    15會員
    111內容數
    日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
    留言0
    查看全部
    發表第一個留言支持創作者!
    Michael楊 的其他內容
    在學習C#之前,必須先建立開發環境,例如安裝Visual Studio或其他IDE,並且建立第一個C#專案。可以在Visual Studio中或使用dotnet CLI來建立各種類型的專案。
    C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
    C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
    Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
    例外處理是Python中的重要概念,用於控制並處理程序異常,防止程序崩潰和數據損失。它包括try, except, else和finally等語法結構,可用於對特定錯誤進行處理,或主動觸發和自定義異常。
    本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
    在學習C#之前,必須先建立開發環境,例如安裝Visual Studio或其他IDE,並且建立第一個C#專案。可以在Visual Studio中或使用dotnet CLI來建立各種類型的專案。
    C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
    C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
    Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
    例外處理是Python中的重要概念,用於控制並處理程序異常,防止程序崩潰和數據損失。它包括try, except, else和finally等語法結構,可用於對特定錯誤進行處理,或主動觸發和自定義異常。
    本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
    Thumbnail
    在進行資訊輸入的過程中,經常需要在不同語言的文字之間切換輸入法,這可能會影響效率。不過,透過程式設計的方法,我們可以實現在選取到需要輸入中文的輸入框時自動切換到中文輸入法,讓操作更加便利。在這篇文章中,我們將介紹兩種實現自動切換中文輸入法的方法,一種是切換輸入法,另一種是使用IME輸入法。
    Thumbnail
    當我的自營工作室客源開始穩定時,C就這樣悄悄走進我的生命裡,至今為止,我和C從來沒有吵架過,連一點點的不愉快、疙瘩甚至懷疑都沒有,對我而言,C的意義只有美好。她總是希望我過得好,我也祝福她永遠快樂。     我的租屋處是一棟由五樓透天隔間的大套房,而我就住在頂樓,旁邊還有一間空房一直沒人承租
    Thumbnail
    JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
    Thumbnail
    一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
    Thumbnail
    發洩完情緒之後,內心裡,總會有一種抒坦。是那種放下的感覺,是那種,什麼都好,都可以不重要,只有自己的那種,唯我獨尊的快感。可以不必再在意些什麼,不必再掙扎著去要求些什麼。唯有放寛心了,才能更真實去體驗自己正在經歷的過程。放下些什麼,才能獲得些什麼。 昨晚,C因為工作無法前來陪伴休假的我。經前症候群嚴
    Thumbnail
    這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
    Thumbnail
    前言 輸出 printf 格式控制字元、格式控制符(format char) 前言 輸出控制字元、輸出控制符 轉義字元、轉義符 格式控制字元、格式控制符 輸入 scanf gets gets與scanf差異
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
    Thumbnail
    在進行資訊輸入的過程中,經常需要在不同語言的文字之間切換輸入法,這可能會影響效率。不過,透過程式設計的方法,我們可以實現在選取到需要輸入中文的輸入框時自動切換到中文輸入法,讓操作更加便利。在這篇文章中,我們將介紹兩種實現自動切換中文輸入法的方法,一種是切換輸入法,另一種是使用IME輸入法。
    Thumbnail
    當我的自營工作室客源開始穩定時,C就這樣悄悄走進我的生命裡,至今為止,我和C從來沒有吵架過,連一點點的不愉快、疙瘩甚至懷疑都沒有,對我而言,C的意義只有美好。她總是希望我過得好,我也祝福她永遠快樂。     我的租屋處是一棟由五樓透天隔間的大套房,而我就住在頂樓,旁邊還有一間空房一直沒人承租
    Thumbnail
    JSON(JavaScript Object Notation)是一種常用的數據交換格式,用於在不同的應用程序之間傳遞結構化數據。在C#中,我們可以使用Newtonsoft.Json模組來處理JSON資料。
    Thumbnail
    一、C#介紹 二、為什麼要學C# 三、.NET Framework介紹
    Thumbnail
    發洩完情緒之後,內心裡,總會有一種抒坦。是那種放下的感覺,是那種,什麼都好,都可以不重要,只有自己的那種,唯我獨尊的快感。可以不必再在意些什麼,不必再掙扎著去要求些什麼。唯有放寛心了,才能更真實去體驗自己正在經歷的過程。放下些什麼,才能獲得些什麼。 昨晚,C因為工作無法前來陪伴休假的我。經前症候群嚴
    Thumbnail
    這篇文章將會介紹官方設置好的偵測玩家輸入,在撰寫遊戲程式的時候肯定需要偵測玩家輸入,其實並不需要自行撰寫程式來監控玩家操作,而是直接調閱官方的資料庫即可。
    Thumbnail
    前言 輸出 printf 格式控制字元、格式控制符(format char) 前言 輸出控制字元、輸出控制符 轉義字元、轉義符 格式控制字元、格式控制符 輸入 scanf gets gets與scanf差異