環境:Windows 10
IDE:VS2019
在C#中,//是單行註解,/**/是區塊註解
- 宣告的變數一定要給予型別。
- var則是一定要給值
整數int
int apple = 100; // 宣告變數apple時就給值100
int bird; // 宣告變數bird,但不給值
bird = 200; // 設定變數bird的值為200
int lucky_girl_age = 18, lucky_boy_age = 17, abby; // 宣告數個同型別的變數
var
- 必需宣告值
var是一定要先給值,var是讓電腦來區分值是什麼型別,若沒有給值,電腦會無法判斷。
在編譯時會經由10,推測number的型別是整數:
var number = 10;
不能只宣告的:var
補充:checked 是用來明確啟用整數型別算術運算和轉換的溢位檢查。
浮點數(float、double、decimal)
microsoft(浮點數值型別)
每個浮點數型別的預設值都是零,浮點數型別都有 MinValue 與 MaxValue 常數,提供該型別的最小與最大有限值。
- float
- 單精準數
- 不可以直接只指定數值,必需在數值最後加 F 或 f
- double
- 雙精準數
- 可以直接指定數值,或在數值最後加 D 或 d
- decimal
- 進位數
- 不可以直接只指定數值,必需在數值最後加M或m
- 通常用於財務(有關錢的計算)。
從c# 7.0開始支援_做為數位分隔符號,可以使用數位分隔符號搭配所有種類的數值常值。
double d_1 = 9D;
double d_2 = 6d;
double d_3 = 4.852_0001000;
Console.WriteLine(d_3); // 4.8520001
float f_1 = 2_000.5F;
float f_2 = 3.4000f;
Console.WriteLine(f_2); // 3.4
decimal myMoney_1 = 3_000.50m;
decimal myMoney_2 = 400.750000M;
Console.WriteLine(myMoney_2); // 400.750000
也可以使用科學記號標記法。
double d = 0.42e2;
Console.WriteLine(d); // 42
float f = 134.45E-2f;
Console.WriteLine(f); // 1.3445
decimal m = 1.5E6m;
Console.WriteLine(m); // 1500000
字串(String)
- 字串加字串
string firstName = "Hello";
string lastName = "World";
string fullName = firstName + "," + lastName;
Console.WriteLine(fullName); // Hello,World
- 字串加數字
int sum = 1 + 1;
string leading = "1+1=";
string result = leading + sum;
Console.WriteLine(result); //1+1=2
- 宣告字串為Null
null 表示字串沒有任何值,可以與字串相加,不等於零(0)也不等於空字串。
string value1 = null;
- 空字串
string value1 = "";
string value2 = string.Empty; // 空字串比較好的寫法
陣列(arry)
- 指定長度後就不可以再修改長度,較適合已知長度
- 第一筆資料從0開始
- 型別必須一致
- 可以重覆修改值
格式:
資料型別 [] 陣列名稱 = new 資料型別[陣列大小];
int[] numbers = new int[4]; // 陣列長度為4
// 宣告後再把值填到陣列裡
numbers[0] = 1000;
numbers[1] = 10;
numbers[2] = 20;
numbers[3] = 30;
numbers[2] = -100; //修改值
宣告陣列時填入值:
// 雖然一開始沒指定長度,但長度是固定的
string[] items = new[] {"A", "B", "C", "D", "E"};
// items[5] = "Z" //會報錯,陣列的長度已超過
/*
* 長度只到5,會出現錯誤的訊息:
* System.IndexOutOfRangeException: Index was outside the bounds of the array.
*/
取得陣列長度:
string[] items = new[] {"A", "B", "C", "D", "E"};
int length = items.Length;
排序小到大&大到小:
int[] items = new int[] {8, 10, 1, 3, 5};
Array.Sort(items); // 小到大
//Array.Reverse(items); // 轉成大到小需先使用sort排列過
foreach (var item in items)
{
Console.Write($"{item}\t");
}
// 1 3 5 8 10
Sort(小到大)允許傳入兩個陣列;
下方使用2個不同的陣列來做成績的排序,且名字要與分數一致。
string[] students = {"小王", "小美", "大強", "大白", "自強", "莒光"};
int[] score_math = {80, 50, 90, 66, 76, 99};
// 將score_math排序, 且同時用相同順序排列students
Array.Sort(score_math, students);
//若想要遞增,則需使用2次Reverse
// Array.Reverse(score_math);
// Array.Reverse(students);
for (int i = 0; i< students.Length; i++)
{
string name = students[i];
int score = score_math[i];
Console.WriteLine($"{name}的成績:{score}");
}
遞減的結果:
遞增的結果:
特殊逸出Escape字元
- \’ 單引號
- \” 雙引號
- \ 反斜線
- \a 發出一聲警告
- \b 倒退一個字元
- \f Form Feed
- \n 換新行
- \r 換行並移到最前方
- \t 水平方向的Tab
- \v 垂直方向的Tab