Ich mache einige Übungen über die 'Event'-Programmierung in C#. Nach dem Duplizieren eines Beispielprogramms aus dem Lehrbuch kann es nicht funktionieren, wie dieses Buch sagte. Ich habe einige Male nachgesehen und kann den Fehler nicht finden. Ich werde es schätzen, wenn jemand mir helfen kann, es herauszufinden.Warum kann dieses Ereignis nicht das erwartete Ergebnis ausgeben?
using System;
delegate void Handler();
class Incrementer
{
public event Handler CountedADozen;
public void DoCount()
{
for (int i = 1; i < 100; i++)
if (i % 12 == 0 && CountedADozen != null)
CountedADozen();
}
}
class Dozens
{
public int DozensCount { get; private set; }
public Dozens(Incrementer incrementer)
{
DozensCount = 0;
Incrementer.CountedADozen += IncrementDozensCount;
}
void IncrementDozensCount()
{
DozensCount++;
}
}
class program
{
static void Main()
{
Incrementer incrementer = new Incrementer();
Dozens dozensCounter = new Dozens(incrementer);
incrementer.DoCount();
Console.WriteLine("Number of dozens={0}", dozensCounter.DozensCount);
}
}
Das sollte erwartete Ergebnis 8 sein, wie du mein Ergebnis sehen können, aber ist 0.
Verwenden Sie keine Bitmaps, um Textdaten wie Code zu senden. Beitragstext –
Der Grund, warum Sie einen Downvote erhalten, ist der Code, der über das Bild geteilt wird. Bitte teilen Sie Ihren Code in der Frage selbst. Was meinst du mit nicht arbeiten? –
Wie für Ihren Fehler, erstellen Sie eine neue 'Incrementer()' in Ihrem 'Dozens()' -Konstruktor, anstatt die, die übergeben wurde. Tun Sie das nicht. Benutze das, das übergeben wurde, und dann wird der 'DozensCount', den du liest, derselbe sein, den du schreibst. –