Home
R
Cancel

[C# 筆記] 泛型 (Generics)

以功能來說,泛型 (Generics) 的出現是為了 「解決程式在執行時期(Run time)中,型別間互相轉換換所耗費的成本問題」。 如果兩個變數(也可以是物件)型別的不同在進行轉換時將會耗費太多時間,雖然說可以把所有的變數宣告成Object來解決型別轉換所耗費的時候,但是全部宣告成Object型別也會佔掉一大部分的記憶體空間,於是在時間與空間的競爭下,泛型 (Generics)便成為兩...

[C# 筆記] 顯式轉換

把一個取值範圍大的數值或是變數,賦值給另一個取值範圍小的變數。 不可以直接賦值,需要強制類型轉換 就像是把特大杯咖啡,倒到中杯裡是不可以的,當然,倒到小杯也是有問題的。 顯式類型轉換 (類型)變數 錯誤範例 long a = 10; int b = a; //報錯,這樣是不行的 顯式轉換 (int) long a = 10; int b = (int)a; //使用 (int)...

[C# 筆記] 隱式轉換

隱式類型轉換 把一個「取值範圍小」的數值或是變數,賦值給另一個「取值範圍大」的變數。 以下這樣是可以沒問題的 int a = 4; //4 bytes long b = a; // 8bytes double c = a; // 8bytes 就像是把小杯咖啡,倒到中杯裡是可以的,當然,倒到特大杯也是沒問題的。 int a 到 double c 轉換的細節,它中間發生了什麼樣的過程? ...

[C# 筆記] 巢狀迴圈

一個迴圈內,使用另一個或多個迴圈。 範例:九九乘法 for (int i = 2; i <= 9; i++) { for (int j = 1; j <= 9; j++) { Console.WriteLine($"{i}*{j}={i*j}"); } } Console.Read(); 範例: 模擬時鐘上秒針(second)和分針(minu...

[C# 筆記] break、continue

break break 用於迴圈與switch語句當中。 break 只能夠結束當前所屬的語句範圍。(結束掉離它最近的迴圈) continue continue 用於迴圈中,可以跳過當前迴圈程式碼,強制開始下一次迴圈的執行。 continue 通常用於「過濾」一些不需要執行的本次迴圈邏輯的情況;就是將異類鏟除掉。 continue 用於結束本次的...

[C# 筆記] 運算式優先級

運算式優先級 優先級不是先計算,而是優先結合為整體 從左到右計算 在一個運算式中,如果存在括號,則優先計算括號中的運算式 舉例1: c = a + b+ ++b int a=1, b=2; int c = a + b+ ++b; //output: 6 輸出為6 a+b=3 ++b=3(b己經變成3) 3+3=6 舉例2: c = ++b + a + b int a...

[C# 筆記] 三元條件運算子?:

作用:從二者當中選擇其一,作為運算式的結果 變數 = 判斷條件? 值1: 值2 如果條件為真,變數等於值1 如果條件為假,變數等於值2 int x = 2, y = 9; int max = (x > y) ? x : y; Console.WriteLine(max); //output: 9 簡單來說,就一句話「二者之中,選擇一個」。 練習:給三個數字,輸出最大的數字 in...

[C# 筆記] ++、-- 運算符

自增++:變數自身加一 自減--:變數自身減一 int a = 10; int b = 10; //前++ int c = ++a; //a=a+1, c=a Console.WriteLine($"c = ++a: {c}"); //11 Console.WriteLine($"a={a}"); //11 //後++ c = b++; //c=b, b=b+1 Conso...

[C# 筆記] Console

輸入 Console.Read(); // 讀入一個字元 Console.ReadLine(); // 讀入一行字串 舉例 輸入字元 char c = Convert.ToChar(Console.Read()); 輸入字串 string s = Console.ReadLine(); 輸入整數 int n = Convert.ToInt32(Console.ReadLine())...

[C# 筆記] Random 隨機數

//如何生成一個隨機數 Random random = new Random(); //產生10以內的隨機數 int num = random.Next(10); //產生10~20的隨機數 num = random.Next(10, 20);