發表文章

目前顯示的是有「C#」標籤的文章

C#委派的學習筆記_Action

圖片
  Action<T> 委託是微軟專門為 返回類型為 void 的委託 所訂製的 是微軟已經開發好的,放在了 .NET 類別庫中,不再需要我們使用 delegate 關鍵字去定。 用於引用一個 void 返回類型的方法,可以傳遞 16 種不同類型的參數,參數個數最大為 8。 Action 的非泛型版本可以呼叫沒有參數的方法。 使用 Action<T> 是一個泛型委託,可以簡化委託的定義,直接使用 Action<T> 就可以呼叫任何返回類型是 void 的方法。 Action委派示範 Student.cs類別 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace DemoCourse { internal class Student { public static void OutPut1 ( int num1) => Console.WriteLine(num1); public static void OutPut2 ( int num1, double num2) => Console.WriteLine(num1 * num2); public static void OutPut3 ( int num1, int num2, decimal num3) => Console.WriteLine(num1 * num2 + num3); } } Program.cs主程式 using System ; using System.Collections ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace DemoCourse { ///...

C#泛型學習筆記

圖片
  微軟最先是在 .NET Framework 2.0 中加入了泛型,隨著 .NET Framework 版本的升級,微軟也將之前的非泛型類提供了泛型版本。 而在 .NET Core 中,微軟直接將泛型從 .NET Framework 移植過來,且進行了內部優化,使效能更加優秀。比方:Stack。在.net core中,甚至提供了有Stack的泛型類 Stack<T> C# 中的泛型有如下優點: (1) 效能好。=>不存在裝箱和拆箱操作。 在 .NET 資料型別中,有值型別和參考型別之分,值型別的值存在記憶體的堆疊上,參考型別的值存在記憶體的堆上,所以值型別和參考型別在相互轉換時是有效能損失的。 (2) 型別是安全的。 (3) 程式碼重用度高。 定義一個Lesson.cs 的類別,增加以下兩個方法 using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ; namespace DemoCourse { internal class Lesson { public void Show ( string s) { Console.WriteLine(s); } public void View < T > (T t) { Console.WriteLine(t); } } } 先不用管 View<T>(T t) 泛型方法是如何定義的,我們只看 Show() 方法與 View<T>() 方法在使用上有什麼區別。現在我們在 Program.cs 中呼叫一下這兩個方法。 Program.cs using System ; using System.Collections.Generic ; using System.Linq ; using System.Text ; using System.Threading.Tasks ...

C#委派的學習筆記_delegate_委派的定義_物件&類別層級方法引用、作為參數傳遞、委派陣列

圖片
  委託(委派),從字面上來理解,就是將事情交由他人代為執行。 當自己有需求時,並不親自動手,而是請別人來完成,這就是委派的概念。 在 C# 中,「委派」的意義與字面上相差無幾,只不過在 C# 裡,委託與方法息息相關。 方法是定義在類別(Class)中的,用來實作邏輯功能,也可以理解為實際執行工作的「人」。 因此,在 C# 中可以簡單地理解為:委託就是用來呼叫方法的一種方式,而且委託與事件(Event)有密切關聯。在 .NET 框架中,定義委託的方式與定義類別相似,凡是能定義類別的地方,也都可以定義委託。 此外,適用於類別的修飾詞(如 public、private 等)也可以用於委託。委派本質上是一種安全的類型,並且會明確定義返回值型別及參數清單,這一點與方法也很相似。 委派的定義 基本語法 定義委派時需使用關鍵字 delegate,基本語法如下: delegate 資料型別 委派名稱(參數型別 參數名稱, …); 使用 delegate 關鍵字來定義委派。 委派可以定義在類別內,也可以定義在類別外。只要是能定義類別的地方,也都能定義委託。 委派必須指定一個回傳資料型別,這個型別要與其綁定的方法相容。 委派必須命名,命名規則與一般變數或類別一致。 委派可以帶有參數,參數的型別與命名方式與方法的參數規則相同。 委派的定義只包含簽章(方法名稱、參數與回傳型別),不包含實際的程式實作內容。 在 C# 中,只要是可以定義類別(class)的地方,就可以用來定義委派。 委派(Delegate)是一種特殊的資料型別,其作用是儲存一個或多個方法的參考位址(方法指標)。 委派定義示範 //更多委派定義的示範 delegate int ProductDelegate1 ( int intA); delegate void ProductDelegate2 (); delegate string ProductDelegate3 ( int intB, string strA); delegate List < int > ProductDelegate4( int [] intArray); 這些委託的定義都是正確的,委託可以有返回值,也可以沒有返回值;而委託的參數也可以為空,如果沒有參數,則使用空括號 () 即可。 你可以這樣來理解委...