C#3.0扩展方法[转]
生活随笔
收集整理的這篇文章主要介紹了
C#3.0扩展方法[转]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C#3.0擴展方法是給現有類型添加一個方法。現在類型既可是基本數據類型(如int,String等),也可以是自己定義的類。
總結:
1、擴展方法是給現有類型添加一個方法;
2、擴展方法是通過 指定關鍵字this修飾方法的第一個參數;
3、擴展方法必須聲明在靜態類中;
4、擴展方法要通用對象來調用;
5、擴展方法可以帶參數。
| //Demo--1 //擴展基本類型 namespace TestExtensionMethods { // 必須建一個靜態類,用來包含要添加的擴展方法 public static class Extensions { //要添加的擴展方法必須為一個靜態方法 //此方法參數列表必須以this開始 第二個即為要擴展的數據類型,在這里就是要擴展string類型 //第三個就無所謂了,就是一對象名,名字隨便,符合命名規則即可 //綜合來講,此方法就是要給string類型添加一個叫TestMethod的方法, 此方法返回一個int型的值,即返回調用此方法對象的長度。 public static int TestMethod(this string s) { return s.Length; } } //測試擴展方法類 class Program { static void Main(string[] args) { string str = "Hello Extension Methods"; //調用擴展方法,必須用對象來調用 int len = str.TestMethod(); Console.WriteLine(len); } } } //Demo--2 //擴展自定義類型,同時展示了擴展方法帶參數情況,以及方法重載 namespace TestExtendMethod { public class Student { public string Description() { return "Student............."; } public string Description(string name) { return "the student’s name is "+name; } } // 必須建一個靜態類,用來包含要添加的擴展方法 public static class Extensions { //要添加的擴展方法必須為一個靜態方法 //此方法參數列表必須以this開始 第二個即為要擴展的數據類型,在這里就是要擴展Student類型 //第三個就無所謂了,就是一對象名,名字隨便,符合命名規則即可 //綜合來講,此方法就是要給Student類型添加一個叫TestMethod的方法,此方法返回一個string型的值 public static string TestMethod(this Student s) { return s.Description(); } //要添加的擴展方法必須為一個靜態方法 //此方法參數列表第一個參數表示要擴展哪一個類,第二個參數才表示此擴展方法的真正參數 //綜合來講,此方法就是要給Student類型添加一個叫TestMethod的方法, 此方法帶有一個string類型的參數,并返回一個string型的值 public static string TestMethod(this Student s,string name) { return s.Description(name); } } //測試擴展方法類 class Program { static void Main(string[] args) { Student stu = new Student(); //調用擴展方法,必須用對象來調用 string mes = stu.TestMethod(); Console.WriteLine(mes); //調用帶參數的擴展方法,只要傳第二個參數就可以了 //因為他的第一個參數其實只是為了表明是擴展哪個數據類型 mes = stu.TestMethod("李沉舟"); Console.WriteLine(mes); } } } |
1、擴展方法是給現有類型添加一個方法;
2、擴展方法是通過 指定關鍵字this修飾方法的第一個參數;
3、擴展方法必須聲明在靜態類中;
4、擴展方法要通用對象來調用;
5、擴展方法可以帶參數。
轉載于:https://www.cnblogs.com/leleroyn/archive/2008/05/29/1209832.html
總結
以上是生活随笔為你收集整理的C#3.0扩展方法[转]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [WPF疑难]ErrorTemplate
- 下一篇: Apache2.2.8、php5.2.6