泛型委託學習程序

2021-08-13 02:26:12 字數 2758 閱讀 7392

委託使用總結:

(1)     委託宣告(定義乙個函式原型:返回值+引數型別和個數)注:在類的外部——中介(房產中介商)

(2)     根據委託定義「具體」的方法——————**   注:在類中定義方法

(3)     建立委託物件,關聯「具體方法」———中介商擁有**  注意:在主函式中操作 

第一種方式:使用new初始化。第二種方式:直接給委託變數賦值方法  

(4)     通過委託去呼叫方法(而不是直接呼叫方法)——————中介帶人看房

開始學習:通過乙個需求來建立使用泛型委託的思想  需求為:求任意陣列的最大值

首先,是我們過去使用的普通方法:需要啥方法就寫啥方法,然後呼叫。  這裡我們就不多說,大家應該清楚。。。。。

其次,使用委託

public

delegate

int tomaxod(object o1, object

o2);

class

program

;object re =getmax(nu, tomaxok);

console.writeline(

"max=

", re);

console.readline();

}public

static

object getmax(object

nums, tomaxod del)

}return

max;

}private

static

int tomaxok(object o1, object

o2)

}

但這只是實現了整型陣列的比較

。字串陣列的比較

為(注釋部分為整型陣列的):

public

delegate

int tomaxod(object o1, object

o2); //object 為所有物件

class

program

; //整型陣列

//object re = getmax(nus, tomaxok);

//呼叫比較整型陣列的方法

"max=", re);

object nus = ;//

字串陣列

object res =getmax(nus, tomaxok2);

/通過匿名函式實現

//object res = getmax(o, delegate(object o1, object o2) );

通過lambda表示式來實現

// object res = getmax(o, (object o1,object o2) => );

console.writeline(

"strmax=

", res);

console.readline();

console.readline();

}public

static

object getmax(object

nums, tomaxod del)

}return

max;

}private

static

int tomaxok2(object o1, object

o2)//字串陣列型別比較

//private static int tomaxok(object o1, object o2)

//實現整型陣列的比較

//}

在上面的例子中我們使用object(表示所有物件)在填寫引數無法明確需要填寫的型別因為都是object型別,難以區分我此時需要填寫的具體型別。

那麼,我們考慮有什麼辦法可以實現在填寫時自動提示我需要填寫什麼型別的物件呢????

使用泛型t 即使用泛型委託

使用泛型委託的**為:

public

delegate

int delcompare(t t1, t t2);

//public delegate int delcompare(object o1, object o2);

class

program

;//int max = getmax(nums, compare1);

max);

string names = ;

string max1 = getmax(names, (string s1, string s2) =>);

console.writeline(max1);

console.readkey();

}public

static t getmax(t nums, delcomparedel)

}return

max;

}//public static int compare1(int n1, int n2)

//具體的int型別比較而不是object型別

// }

可能還會想不透object已經是所有型別為什麼還用泛型表示呀???

舉個簡單的例子:list的例子

比如你宣告乙個list

然後當你試著往list新增student物件

那麼這個就相當於變成了,你只能向其中插入student物件

你向這個list新增別的物件雖然也預設繼承object但是不是student型別所以不能插入

但如果你一開始就宣告了list

那麼你插入任何物件都是沒有問題了,那麼也就失去了泛型→規範型別的意義了。

泛型 二 泛型委託

using system using system.collections.generic using system.linq using system.text namespace 泛型委託 public event stackeventhandler,stackeventargs stackev...

委託學習總結(三)泛型委託

之前,我們學習總結了委託這個概念,也闡述了委託,匿名方法,lambda表示式三者之間的關係,那麼今天再來繼續學習委託更深層次的東西 泛型委託,什麼是泛型,這個概念我也會在之後做出總結,這裡不做很深層次的討論,重點是討論泛型和委託如何配合使用,其實泛型這個概念在這裡也不會對我們對委託的理解有太大的影響...

C 學習日記30 泛型類 泛型方法 泛型委託

泛型允許您延遲編寫類或方法中的程式設計元素的資料型別的規範,直到實際在程式中使用它的時候。換句話說,在宣告類或方法的時候由於不知道使用者要傳入什麼樣型別的引數,所以在傳入型別的地方 挖乙個坑 使用它的時候我們再用具體資料型別填上。根據前面所學知識我們定義乙個類 class data 此時n data...