C# 扩展方法
擴展方法是C#3.0的特征之一,通過擴展方法可以在不創建派生類類型,不修改原始類型的基礎上,直接向現有類型添加方法。擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。
包含擴展方法的類必須定義為靜態(static)類,擴展方法也必須定義為靜態方法。第一個參數為擴展類型,必須用this關鍵是修飾,擴展方法可以作為普通方法一樣調用。
1 新建一項目,在項目中新建一命名空間Extra,定義幾個基礎類型的擴展方法
namespace Extra
{
public static class Test
{
//定義string類型的擴展方法IsRight()
public static bool IsRight(this string str)
{
switch (str.ToUpper().Trim())
{
case "RIGHT": return true;
default:
return false;
}
}
//定義Int類型的擴展方法IsRight()
public static bool IsRight(this int str)
{
if (str > 10)
return true;
else
return false;
}
//定義Obj類型的擴展方法
public static void Print(this object obj, string hink)
{
MessageBox.Show(obj.ToString());
MessageBox.Show(hink.ToString());
}
}
}
2 在項目中調用擴展方法
private void buttonStings_Click(object sender, EventArgs e)
{
string str1 = "right";
string str2 = "err";
MessageBox.Show(str1.IsRight().ToString());
}
private void buttonInts_Click(object sender, EventArgs e)
{
string str1 = "right";
string str2 = "err";
MessageBox.Show(1.IsRight().ToString());
}
private void buttonPrint_Click(object sender, EventArgs e)
{
string str3 = "123";
str3.Print("abc");
}
private void buttonEXprint_Click(object sender, EventArgs e)
{
Test.Print("123", "456");
}
總結:在擴展方法使用前需要顯示的引用擴展方法所在的命名空間;
? ? ? ? 定義完成擴展方法之后,完全可以像類型的重載一樣調用擴展方法;
?擴展方法被調用時和普通的成員方法被調用時一樣,擴展方法的第一個參數也需要在調用時指出。
轉載于:https://www.cnblogs.com/zoood/p/3617918.html
總結
- 上一篇: 行走在成为程序猿的道路上
- 下一篇: C#StreamWriter的操作解析