C#進階學習3--擴充套件方法(this)
阿新 • • 發佈:2021-06-29
一.擴充套件方法的作用
1.擴充套件密封類中的方法和屬性
示例
假設又有一個第三方的類,如下:
public sealed class Person
{
public string Name { get; set; }
public string Phone { get; set; }
public string getPhone()
{
return Phone;
}
}
現在有一個需求,需要給Person增加一個公共的呼叫方法,輸出當前類的Name,由於Person類是密封類,所以不能被繼承,這時候就可以使用擴充套件方法
public static class PersonExtened
{
public static void ShowName(this Person person)
{
Console.WriteLine(person.Name);
}
}
這時即可直接呼叫該擴充套件方法,如下圖所示:
2.擴充套件介面
現有如下介面與實現類
public interface ICalc { int add(int num1,int num2); } class CalcFun : ICalc { public int add(int num1, int num2) { return num1 + num2; } }
假設現在有如下需求,在不更改現有介面的前提下,給所有實現Icalc介面的類增加減法,乘法,與除法的功能?這時候就可以用擴充套件方法實現,實現方式如下:
public static class CalcFunExtend { public static int min(this ICalc calc, int num1, int num2) { return num1 - num2; } public static int mul(this ICalc calc, int num1, int num2) { return num1 * num2; } internal static int min(int v1, int v2) { throw new NotImplementedException(); } public static int div(this ICalc calc, int num1, int num2) { return num1 / num2; } }
這個時候再呼叫實現了Icalc介面的方法,即可同步實現減法,乘法與除法的功能,如下圖所示: