FizzBuzzとの3か月(18)

おせわになります。

今日もC#で、デリゲートを使ってみました。デリゲートは、いわゆる「メソッドオブジェクト」のようなものだと認識しています。
デリゲートを使うには、以下の3つの手順が必要です。

  1. デリゲートを宣言する。
  2. デリゲートのインスタンスを作る。
  3. デリゲートを実行する。

以下、コードです。

using System;
using System.Collections.Generic;

namespace ConsoleApplication1 {
    delegate void PrintSomething();

    class Program : Object {
        private List<PrintSomething> delegates = new List<PrintSomething>();

        public void PrintSomethingAll() {
            foreach (PrintSomething method in this.delegates) {
                method();
            }
        }

        static void Main(string[] args) {
            Program self = new Program();

            for (int i = 0; i < 100; i++) {
                int param = i + 1;
                if (param % 3 == 0 && param % 5 == 0) {
                    self.delegates.Add(delegate() { Console.WriteLine("FizzBuzz"); });
                } else if (param % 3 == 0) {
                    self.delegates.Add(delegate() { Console.WriteLine("Fizz"); });
                } else if (param % 5 == 0) {
                    self.delegates.Add(delegate() { Console.WriteLine("Buzz"); });
                } else {
                    self.delegates.Add(delegate() { Console.WriteLine(param); });
                }
            }
            self.PrintSomethingAll();
            Console.ReadLine();
        }
    }
}

以上