You are on page 1of 1

Chào các bɞn, nay mình xin làm m͙t bài vɾ tɞo m͙t delegate trong C#.

Delegate là khái niʄm trong C#, nó gi͑ng như con tr͏ hàm cͧa C++. Delegate là con tr͏ tr͏ vào các hàm có cùng đ͑i(s͑ lưͣng đ͑i và kiʀu đ͑i
gi͑ng nhau)
Tɞi sao phɠi dùng ?
- Delegate là cơ s͟ cͧa Event do đó khi ta mu͑n sͭ dͥng event ta phɠi sͭ dͥng Delegate

Ví dͥ đơn giɠn thɼ này. Bɞn đang ͟ nhà cͧa nh͏ bɞn cͧa bɞn, nh͏ đó nh͝ bɞn sͭa bài đ͓ án cu͑i kƒ cho nh͏ đó, bɞn biɼt trư͛c đưͣc như vɪy
nên trư͛c khi đi bɞn đưa chìa khóa phòng cho nh͏ em gái cͧa mình nh͝ nó ´mày cɤm chìa khóa phòng anh nè´, xong tͱ dưng máy cͧa nh͏

bɞn đó bʈ cháy ngu͓n, gi͝ phɠi vɾ phòng bɞn làm bài, phòng bɞn hɼt sͩc là lɤy, nhiɾu rác, tô mì ăn cɠ tuɤn chưa rͭa . Bɞn alo g͍i nh͏

em, ³mày qua dɶp phòng cho anh đi, nh͏ bɞn mà thây lɤy quá nó chán anh thì toi ´. trong trư͝ng hͣp này bɞn không thʀ nào tͱ dɶp
phòng mình đưͣc, phɠi nh͝ con em nó làm cho vɪy bɞn đã ͧy quyɾn cho nó 1 hành đ͙ng nào đó có, bɞn không biɼt là hành đ͙ng nào trư͛c
đʀ mà chuɦn bʈ, lúc này bɞn phɠi nh͝ ngư͝i khác làm giùm.

Hehe, trên đây là ví dͥ mình xin trích rút cͧa m͙t bɞn mà mình sưu tɤm đưͣc.

Còn đ͑i v͛i lɪp trình, mình xin cho ví dͥ thɼ này.

Bɞn và ngư͝i bɞn cͧa bɞn chia ra m͙t project, m͗i ngư͝i viɼt m͙t form chɰng hɞn, Ngư͝i A viɼt FormShowResult, Ngư͝i B viɼt
FormInsertData.

͞ FormShowResult, ngư͝i a nhiʄm vͥ là viɼt m͙t hàm, hàm đó có truyɾn vào tham s͑ và các tham s͑ đó hiʀn thʈ lên label chɰng hɞn.

public O  GetValue(String str1, String str2)


{// khai báo 1 hàm v͛i 2 tham s͑ đɤu vào là str1, và str2 nó sɺ đưa dͯ liʄu vào 2 lable
label1.Text = str1;
label2.Text = str2;
}

Ví dͥ trên ngư͝i A viɼt m͙t hàm, nhɪn 2 tham s͑ string, và đưa nó lên label.

Ok , Bây gi͝ ngư͝i B viɼt lên m͙t FormInsertData có 2 textbox.

Vɢn đɾ bây gi͝ là viʄc kɼt hͣp giͯa 2 ngư͝i, Ngư͝i B bây gi͝ mu͑n hiʀn thʈ dͯ liʄu tͫ 2 textbox cͧa form h͍ qua 2 label bên form cͧa ngư͝i a,
nhưng ngư͝i b lɞi không biɼt bên ngư͝i a viɼt hàm tên gì, như thɼ nào (mɴc dù ngư͝i đ͍c bài này biɼt là bên ngư͝i a viɼt hàm public O 
GetValue(String str1, String str2) ) hehehe.

Vɢn đɾ này m͛i nɠy sinh ra delegate.

Thì ngư͝i ta m͛i nghĩ ra m͙t cách đɢy là, bên ngư͝i b sɺ qui đʈnh ra m͙t khuôn mɨu hàm (cái khuôn mɨu thôi), sau đó bên ngư͝i a m͛i tͫ cái
khuôn mɨu đɢy viɼt ra hàm có chͩc năng hiʀn thʆ dͯ liʄu lên form (hàm GetValue(string, string) đã trình bày ͟ trên), sau đó ngư͝i b mu͑n
hiʀn thʈ dͯ liʄu tͫ bên form mình qua form ngư͝i b thì chʆ cɤn g͍i hàm nào có khuôn mɨu mà mình đã qui đʈnh.

Khuôn nɨy đɢy đưͣc g͍i là Delegate.

Như bɞn thɢy thì bên ngư͝i A không cɤn nói cho ngư͝i B chính xác vɾ tên hàm mà mình viɼt đʀ hiʀn thʈ dͯ liʄu lên form mà chʆ cɤn viɼt ra
hàm dͱa trên khuôn mɨu ngư͝i b đɾ xuɢt.

Cũng như ngư͝i B không cɤn biɼt chính xác hàm mà ngư͝i A viɼt đʀ hiʀn thʈ dͯ liʄu, mà chʆ cɤn g͍i hàm có khuôn mɨu là khuôn mɨu mình
đã đɾ xuɢt.

Sau đây là chương trình VD:

You might also like