Sie sind auf Seite 1von 4

EVENTS IN C#

using System;
using System.Collections;

namespace CS2026
{
public delegate void SpeedChangedEventHandler(object source,
SpeedChangedEventArgs e);

public class SpeedChangedEventArgs : EventArgs


{
int _oldSpeed;
int _newSpeed;

public int OldSpeed


{
get
{
return _oldSpeed;
}
set
{
_oldSpeed = value;
}
}

public int NewSpeed


{
get
{
return _newSpeed;
}
set
{
_newSpeed = value;
}
}
}

public class Car


{
SpeedChangedEventHandler _speedChangedEventHandler;
object lockThis = new object();
int _speed = 0;

public event SpeedChangedEventHandler SpeedChanged


{
add
{
lock (lockThis)
{
_speedChangedEventHandler += value;
}
}
remove
{
lock (lockThis)
{
_speedChangedEventHandler -= value;
}
}
}

public virtual void OnSpeedChanged(int oldSpeed, int newSpeed)


{
SpeedChangedEventArgs e = new SpeedChangedEventArgs();
e.OldSpeed = oldSpeed;
e.NewSpeed = newSpeed;

if (_speedChangedEventHandler != null)
_speedChangedEventHandler(this, e);
}

public int Speed


{
get
{
return _speed;
}
set
{
int oldSpeed = _speed;
_speed = value;
OnSpeedChanged(oldSpeed, _speed);
}
}

static void Main(string[] args)


{
Car car = new Car();
car.Speed = 25;
car.SpeedChanged += new
SpeedChangedEventHandler(CarSpeedChanged);
car.Speed = 50;
car.SpeedChanged -= new
SpeedChangedEventHandler(CarSpeedChanged);
car.Speed = 75;
}

static void CarSpeedChanged(object source, SpeedChangedEventArgs e)


{
Console.WriteLine("Car speed changed from {0} to {1}",
e.OldSpeed, e.NewSpeed);
}

}
DELEGATED IN C#
using System;
using System.Collections;

namespace CS2026
{
class ListMapping
{
delegate int Foo(int x);

static ArrayList Map(Foo f, ArrayList list)


{
ArrayList result = new ArrayList();
foreach (int element in list)
{
result.Add(f((int)element));
}
return result;
}

static int inc(int x) { return x + 1; }


static int sqr(int x) { return x * x; }

public static void Main()


{
Foo f = new Foo(inc);
f += sqr;

ArrayList aList = new ArrayList();


aList.Add(1);
aList.Add(2);
aList.Add(3);

Console.WriteLine("--- Before Map---");


Console.Write("[");
foreach (int element in aList)
{
Console.Write(element);
Console.Write(", ");
}
Console.WriteLine("]");

ArrayList newList = Map(f, aList);

Console.WriteLine("--- After Map---");


Console.Write("[");
foreach (int element in newList)
{
Console.Write(element);
Console.Write(", ");
}
Console.WriteLine("]");
Console.ReadLine();
}
}
}

Das könnte Ihnen auch gefallen