開発環境
- OS: Windows 10 Pro
- IDE(統合開発環境): Visual Studio Community 2017
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 コメント:
コメントを投稿