C 拾遺系列 5 泛型委託

2021-08-22 17:00:31 字數 1670 閱讀 7301

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace nettest

//泛型委託   

class

testgenericdelegate

public

delegate

void

stackeventhandler

(t sender, u eventargs);

class

stack/*

在泛型類和泛型方法中產生的乙個問題是,在預先未知以下情況時,如何將預設值分配給引數化型別 t:

t 是引用型別還是值型別。

如果 t 為值型別,則它是數值還是結構

給定引數化型別 t 的乙個變數 t,只有當 t 為引用型別時,語句 t = null 才有效;只有當 t 為數值型別而不是結構時,語句 t = 0 才能正常使用。

解決方案是使用 default 關鍵字,此關鍵字對於引用型別會返回 null,對於數值型別會返回零。

對於結構,此關鍵字將返回初始化為零或 null 的每個結構成員,具體取決於這些結構是值型別還是引用型別

*/public t getname()

t temp = default(t);

return temp;

public

class

stackeventargs : eventargs

public

string name

public

string message

public

event

stackeventhandler

, stackeventargs> stackevents;

public

void stackchange()

stackeventargs s = new

stack

.stackeventargs();

s.name = "jack";

s.message = "better man";

onstackchanged(s);

protected

virtual

void onstackchanged(stackeventargs e)

stackevents(this, e);

class

sampleclass

public

void handlestackchange(stack

stack, stack

.stackeventargs args)

console.out.writeline(args.message + "," + args.name);

public

void test()

stack

s = new

stack

();sampleclass o = new

sampleclass();

s.stackevents += o.handlestackchange;

s.stackchange();

console.out.writeline(s.getname());

泛型程式設計拾遺

首先請大家思考乙個問題 以下6個問題可否共享一段 答案是肯定的。採用泛型程式設計對問題進行抽象,抽取出以上問題的共性即演算法 algorithm 容器 container 和迭代器 itera 這也是stl standard template library,標準模板庫 的三要素。1 templat...

拾遺系列(五)Tips

載入原圖 uiimage image uiimage imagenamed 拉伸處理 說明需要保護的區域 image image resizableimagewithcapinsets uiedgeinsetsmake 30,30,30,30 resizingmode uiimageresizing...

C語言拾遺

main函式引數 c語言規定main函式引數只能有兩個,習慣上這兩個引數寫成argc和argv。c語言還規定argc必須是整形變數,argv必須是指向字串的指標陣列。因此,main函式的函式頭應該寫為 main argc,argv int argc char argv 或者 main int arg...