私はC#で 'イベント'プログラミングに関するいくつかの習慣を作っています。教科書からサンプルプログラムを複製した後は、この本の説明どおりに動作しません。私は何度か点検したが、エラーがどこにあったかをまだ見つけることはできない。もし誰かがそれを理解するのを助けることができれば、私はそれを感謝します。このイベントが期待した結果を出力できないのはなぜですか?
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);
}
}
あなたが見ることができるように期待される結果は8でなければなりませんが、私の結果は次の2つのインクリメンタ、1があなたのコンストラクタに渡されている(そして、使用されていない)とデルを持っ0
コードのようなテキストデータを投稿するためにビットマップを使用しないでください。投稿テキスト。 –
downvoteを取得する理由は、画像を介して共有されたコードです。質問自体にあなたのコードを教えてください。働いていないとどういう意味ですか? –
あなたのバグは、渡されたものを使うのではなく、 'Dozens()'コンストラクタで新しい 'Incrementer()'を作成しています。渡されたものを使うと、あなたが読んでいる 'DozensCount'はあなたが書いているものと同じものになります。 –