參考文章: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# 程式中。
在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<int> numbers = new List<int>();
numbers.Add(1);
numbers[0] = 2;
numbers.Remove(2);
// 或者
numbers.RemoveAt(0);
下列範例會建立一維陣列、多維陣列和不規則陣列︰
// 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或其他集合類型。
在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"的鍵值對