環境:Windows 10
IDE:VS2019
在C#中,//是單行註解,/**/是區塊註解
- 宣告的變數一定要給予型別。
- var則是一定要給值
Table of Contents
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="顯示/隱藏內容目錄"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span>
整數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 10Sort(小到大)允許傳入兩個陣列;
下方使用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