C 代表型別(delegate)

2021-06-08 11:27:39 字數 831 閱讀 6328

c和c++程式設計師看來,指標既是他們最強有力的工具之一,同時又給他們帶來了很多苦惱之處。因為指標指向的資料型別可能並不相同,比如你可以把int型別的指標指向乙個float型別的變數,而這時程式並不會出錯。而且,如果你刪除了乙個不應該被刪除的指標(比如windows中指向主程式的指標),程式就有可能崩潰。由此可見,濫用指標給程式的安全性埋下了隱患。

正因為如此,在c#語言中取消了指標這個概念。當然,對指標戀戀不捨的程式設計師仍然可以在c#中使用指標,但必須宣告這段程式是「非安全(unsafe)」的。而我們在這裡要介紹的是c#的乙個引用型別--代表(delegate)。它實際上相當於c#中的函式指標原型。與指標不同的是,代表在c#是型別安全的。

在宣告代表時,只需要指定代表指向的原型的型別,它不能有返回值,也不能帶有輸出型別的引數。比如我們可以宣告乙個指向int型別函式原型的代表:

delegate int mydelegate();

如果我們宣告了乙個自己的代表,那麼它就是對系統定義的類system.delegate的乙個擴充套件。在代表的例項中,我們可以封裝乙個靜態方法,也可以封裝乙個非靜態的方法。我們看下面的例子:

程式清單4-2:

using system;

delegate int mydelegate(); //宣告乙個代表

public class myclass

static public int staticmethod()

} public class test }

程式的輸出結果是:

call the instance method.

call the static method.

C 代表(delegate)和事件 event

代表 delegate 它是c 語言裡面的函式指標,代表可以指向某乙個函式,在執行的時候呼叫這個函式的實現。下面來看看它的實現步驟 宣告乙個delegate物件。實現和delegate具有相同引數和返回值的函式實現 可以是靜態和非靜態的 產生乙個delegate物件的時候,把你剛剛實現的函式作為引數...

C 代表(delegate)和事件 event

代表和事件是使用c 語言兩個非常重要的概念,如果你不會使用代表和事件,那就說明你不會用c 進行軟體開發。代表 delegate 它是c 語言裡面的函式指標,代表可以指向某乙個函式,在執行的時候呼叫這個函式的實現。下面來看看它的實現步驟 宣告乙個delegate物件。實現和delegate具有相同引數...

C 代表(delegate)和事件 event

代表 delegate 它是c 語言裡面的函式指標,代表可以指向某乙個函式,在執行的時候呼叫這個函式的實現。下面來看看它的實現步驟 宣告乙個delegate物件。實現和delegate具有相同引數和返回值的函式實現 可以是靜態和非靜態的 產生乙個delegate物件的時候,把你剛剛實現的函式作為引數...