開発環境
- 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 コメント:
コメントを投稿