「匿名方法」主要是為了「簡化不必要的程式碼的撰寫」,讓程式開發人員更專心把心力放在程式的設計與邏輯上。 其中比較常用的例子是當使用「委派(Delegate)」時,不需要建立額外的方法。 什麼是「匿名方法」? 「匿名方法」就是沒有名字的方法。(匿名跟委派也有點關係…) 他的本質就是一個函數 當你方法只會用到一次的時候,就可以考慮用匿名函數 語法 delegate (a...
[C# 筆記] 疊代器 (Iterators) - yield return 語法糖
疊代器 (Iterators) 的出現是為了「讓foreach 語法更加靈活與簡單」。 yield關鍵字用於遍歷循環中 yield return用於返回IEnumerable<T> yield break用於終止循環遍歷 當我們編寫 C# 程式碼時,經常需要處理大量的資料集合。在傳統的方式中,我們往往需要先將整個資料集合載入記憶體中,然後再進行操作。但是如果資...
[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...