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"的鍵值對
avatar-img
15會員
111內容數
日後將分享關於我的經驗(日常、工作、技術),並期待未來能創造屬於我的宇宙。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
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
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
Anytype主要分為四區塊:目錄欄(Widget組成)、主編輯畫面、導航選單、設定區。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
針對 JavaScript 中的原始型別和隱性轉型進行了詳細的探討
Thumbnail
在先前的型別文章中,我們曾經聊過 JavaScript 常用的一些型別,但針對布林這個型別,我們沒有做太多的解釋,原因在於布林值在 JavaScript 會有一個特殊的規則:自動轉型 。 自動轉型可說是讓 JavaScript 為弱型別、且難以管理的最重要的要素,接著就來讓我們來聊聊什麼是自動轉型
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
一切從"物件(Object)"開始 1.建立新物件 2.編輯物件內容 3.在物件中新增區塊
Thumbnail
Anytype主要分為四區塊:目錄欄(Widget組成)、主編輯畫面、導航選單、設定區。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
針對 JavaScript 中的原始型別和隱性轉型進行了詳細的探討
Thumbnail
在先前的型別文章中,我們曾經聊過 JavaScript 常用的一些型別,但針對布林這個型別,我們沒有做太多的解釋,原因在於布林值在 JavaScript 會有一個特殊的規則:自動轉型 。 自動轉型可說是讓 JavaScript 為弱型別、且難以管理的最重要的要素,接著就來讓我們來聊聊什麼是自動轉型