扩展方法的本质:实际上就是静态方法

注意:
1、这个类必须是静态类 【关于扩展方法,为什么要定义的在静态类中,是因为在内存中找到这个方法的速度会更快,这样就提高了性能】
2、至少要有一个参数,这个参数就是this
3、静态类中的方法必须为静态方法

调用静态方法的顺序:
当一个类中的方法名和方法参数和静态类中的方法名完全一样,这时候,调用的先后顺序是:先调用此类中的方法,如果没有找到此方法,就会去找扩展方法

扩展方法其实就是C#的一种语法糖

 

1、第一步:定义了一个类:Dog

 1 public class Dog
 2     {
 3         /// <summary>
 4         /// DogId
 5         /// </summary>
 6         public int DogId { get; set; }
 7 
 8         /// <summary>
 9         /// 姓名
10         /// </summary>
11         public string DogName { get; set; }
12 
13         /// <summary>
14         /// 年龄
15         /// </summary>
16         public int DogAge { get; set; }
17 
18         /// <summary>
19         /// 玩具
20         /// </summary>
21         public string DogToy { get; set; }
22 
23         public override string ToString()
24         {
25             string str = string.Empty;
26             str = "我的号码是:" + DogId + "号;我的名字叫:" + DogName + ";我今年" + DogAge + "岁;" + "我喜欢玩:" + DogToy;
27             return str;
28         }
View Code

 2、第二步:定义个扩展类:DogExtend

1 public static void SayHi(this Dog dogObj)
2         {
3             string str = "大家好,我叫" + dogObj.DogName + ";很高兴认识大家";
4             MessageBox.Show(str);
5         }
View Code

3、第三步:调用扩展方法 【写了一个测试单元】

 1 public class UnitTest1
 2     {
 3         [TestMethod]
 4         public void TestMethod1()
 5         {
 6             Dog d = new Dog() { DogId = 1, DogName = "小白", DogAge = 10, DogToy = "小球" };
 7             DogExtend.SayHi(d);
 8 
 9             d.SayHi();
10         }
11      }
View Code