Académique Documents
Professionnel Documents
Culture Documents
Hussam Abu-Libdeh
CS 2026, Spring 2009
Announcements
Submit in CMS
Previously Covered
Iterators
Advanced C# topics:
Nullable types
Partial Classes
Generics
Today's Agenda
Delegates
Anonymous methods
Events
Ocaml:
map(funx>x*x)[1;2;3];;
C/C++:
typedefint(*fptr)(int);
intapply(fptrf,intvar){
returnf(var);
}
intF(intvar){..}
fptrf=F;
apply(f,10);//sameasF(10)
Delegates
An objectified function
Sealed implicitly
e.g. delegateintFoo(intx)
Delegates Example
delegateintFoo(refintx);
intIncrement(refintx){returnx++;}
intDecrement(refintx){returnx;}
Foof1=newFoo(Increment);
f1+=Decrement;
x=10;
Console.WriteLine(f1(x));
Console.WriteLine(x);
delegateintFoo(intx);
List<int>Map(Foof,List<int>list){
List<int>result=newList<int>();
foreach(intelementinlist){
result.Add(f(element));
}
returnresult;
}
Mapper.cs
Anonymous Methods
//fisadelegate
inty=10;
f+=delegate(intx){returnx+y;}
Outer variables
Outer Variables
Events Motivation
Event-based programming
Events in C#
In C#
Events Example
publicdelegatevoidEventHandler(objectsource,
EventArgse);
classRoom{
publiceventEventHandlerEnter;
publicvoidRegisterGuest(objectsource,
EventArgse){..}
publicstaticvoidMain(string[]args){
Enter+=newEventHandler(RegisterGuest);
if(Enter!=null){
Enter(this,newEventArgs());
}
}
}
Events vs Delegates
e.g. Button.OnClick
Events Accessors
Example
Or to control accessibility