#, . :
- , EventHandler, () -
public delegate void EventHandler(object sender, EventArgs e) [1]. , #, , , / / .. - , , , , - . + =. , - =. MSDN ,
object.event += eventHandler ( object.event += new EventHandler(eventHandler);) - (
event Event SomeEvent;) , , - , . , EventHandler, [1] - private void numberChangedEventHandler(object sender, EventArgs eventArguments)
, + =.
:
public class NumberSequence
{
private readonly List<int> numbers = new List<int>();
private readonly Random random = new Random();
public event EventHandler DifferentNumbersEvent;
public NumberSequence()
{
Enumerable.Range(1, 100).ToList().ForEach(number =>
{
numbers.Add(random.Next(1, 100));
});
}
public List<int> Numbers { get { return numbers; } }
public void TraverseList()
{
for (var i = 1; i < this.numbers.Count; i++)
{
if (this.numbers[i - 1] != this.numbers[i])
{
if (this.DifferentNumbersEvent != null)
{
this.DifferentNumbersEvent(this, EventArgs.Empty);
}
}
}
}
}
, , , , ( ):
private void differentNumberEventHandler(Object sender, EventArgs eventArguments)
{
Console.WriteLine("Different numbers...");
}
:
var ns = new NumberSequence();
ns.DifferentNumbersEvent += differentNumberEventHandler;
ns.TraverseList();
(lambda/anonymous methods/...), :
object.Event += (s, e) => { // code ... }; object.Event += (Object sender, EventArgs eventArguments) => { // code ... };. ? - , private void differentNumberEventHandler....
, , , . # , . , EventArgs , , :
public class NumbersInfoEventArgs : EventArgs
{
public int Number1 { get; set; }
public int Number2 { get; set; }
}
, NumbersInfoEventArgs ( ):
public event EventHandler<NumbersInfoEventArgs> DifferentNumbersEvent;
...
this.DifferentNumbersEvent(this, new NumbersInfoEventArgs
{
Number1 = this.numbers[i - 1],
Number2 = this.numbers[i]
});
, , :
private void differentNumberEventHandler(Object sender, NumbersInfoEventArgs eventArguments)
{
Console.WriteLine("Different numbers {0} - {1}", eventArguments.Number1, eventArguments.Number2);
}
voila, :
Different numbers 89 - 86
Different numbers 86 - 53
Different numbers 53 - 12
Different numbers 12 - 69