擴充套件方法是c# 3.0的又乙個特性,它允許開發人員在不建立派生型別和不修改原始型別的基礎上,直接向現有型別"新增"方法。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。
包含擴充套件方法的類必須定義為靜態(static)類,擴充套件方法也必須定義為靜態(static)方法,它的第乙個引數指定該方法被擴充套件到哪乙個型別中,同時第乙個引數要用this關鍵字修飾,擴充套件方法可以作為普通方法一樣的方式被呼叫。
示例**4-16演示擴充套件方法的使用。包含擴充套件方法的類extendmethods被定義為static類,擴充套件方法:isright()、printhint()都被定義為static方法,而且第乙個引數都用this關鍵字修飾,表示該方法擴充套件到某個型別。其中,isright()方法被擴充套件到string和int型別,而printhint()方法則被擴充套件到object型別,這樣,printhint()就可以被所有型別訪問,因為所有型別都是object型別的子類。
示例**4-16
public
static
class
extendmethods
} //定義乙個int型別的擴充套件方法isright()
public
static
bool
isright(
this
intval)
else
} //定義乙個對於所有型別的擴充套件方法,列印類資訊同時新增乙個字串作為提示資訊
public
static
void
printhint(
this
object
obj,
string
hint)
} namespace
useextmethod
} } 生成並執行示例**4-16,得到程式輸出如下:
str1.isright()
=true
str2.isright()
=false
i1.isright()
=true
i2.isright()
=false
誓言--
你好!
在使用擴充套件方法前需要顯式引用擴充套件方法所在的命名空間,如示例**4-16中的** "using extendmethods;"。另外,在擴充套件方法被呼叫時和普通的成員方法呼叫一樣,擴充套件方法的第乙個引數也需要在呼叫時指出。
C 3 0新特性之擴充套件方法
c 3.0擴充套件方法是給現有型別新增乙個方法。現在型別既可是基本資料型別 如int,string等 也可以是自己定義的類。demo 1 擴充套件基本型別 namespace testextensionmethods 測試擴充套件方法類 class program demo 2 擴充套件自定義型別,...
C 3 0新特性之擴充套件方法
不講什麼廢話了,來點幹的,首先您看下這個類的定義和實現 using system using system.collections.generic using system.linq using system.text namespace exfunctions username 這是我在vs200...
c 如何擴充套件系統內建類(C 3 0)
c 3.0 vs2008 支援在任何型別上擴充套件生成自定義的方法。比如說想在string型別的物件裡面多乙個toint32 來方便的將字元轉換成整形。在實現的過程中的關鍵字為static和this 下面我們來做乙個在string型別中新建乙個toint32的自定義方法 view code publ...