2018年4月11日水曜日

開発環境

Head First C# ―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Greene (著)、佐藤 嘉一 (監修, 監修)、木下 哲也 (翻訳)、オライリージャパン)の6章(インタフェースと抽象クラス - クラスに約束を守らせる)、自分で考えてみよう(p. 235)を取り組んでみる。

コード

using System;

namespace ConsoleApp2
{
    interface IWorker { }
    interface IStingPatrol : IWorker { }
    interface INectarCollector : IWorker { }
    class Bee { }
    class Worker : Bee, IWorker { }
    class Queen : Bee { }
    class NectarStinger : Worker, INectarCollector, IStingPatrol { }
    class NectarCollector : Worker, INectarCollector { }

    class Robot { }
    class RoboBee : Robot, IWorker { }

    class Program
    {
        static void Main(string[] args)
        {
            IWorker[] bees = new IWorker[8];
            bees[0] = new NectarStinger();
            bees[1] = new RoboBee();
            bees[2] = new Worker();
            bees[3] = bees[0] as IWorker;
            // インデックス4の行は削除
            bees[5] = null;
            bees[6] = bees[0];
            // インデックス7の行は削除

            // true: 0, 3, 6
            for (int i = 0; i < bees.Length; i++)
            {
                if (bees[i] is INectarCollector)
                {
                    Console.Write("{0} ", i);
                }
            }
            Console.WriteLine("");

            // true: 0, 3, 6
            for (int i = 0; i < bees.Length; i++)
            {
                if (bees[i] is IStingPatrol)
                {
                    Console.Write("{0} ", i);
                }
            }
            Console.WriteLine("");

            // true: 0, 1, 2, 3, 6
            for (int i = 0; i < bees.Length; i++)
            {
                if (bees[i] is IWorker)
                {
                    Console.Write("{0} ", i);
                }
            }
            Console.WriteLine("");
        }
    }
}

入出力結果(コマンドプロンプト)

0 3 6
0 3 6
0 1 2 3 6
続行するには何かキーを押してください . . .

0 コメント:

コメントを投稿