C 3 0 新增擴充套件方法擴充套件現有類

2022-02-12 10:46:00 字數 1216 閱讀 1054

擴充套件方法是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...