2020-12-24に更新

【C#】DictionaryのValueにクラスをぶちこむ

C#

DictionaryのValueにクラスをぶちこみたい!

突然ですか、「DictionaryのValueにクラスをぶちこみたい!」というわけで。。。

作るもの

環境

  1. VisualStudio2020
  2. .NET Core
  3. コンソールアプリ

やりたいこと

  1. ID(数字)をいれると、IDに紐づいたクラスを取得
  2. 取得したクラスから名前を表示

…クラスとかで分けなくてもいいんじゃね?というのは大いにわかる

今回は私の大好きなナガノさんのキャラクター、ちいかわとハチワレちゃんの名前を取得します。

DictionaryのValueにクラスをぶちこむには…?

ソース

            Dictionary<int, INagano> NaganoCharacter = new Dictionary<int, INagano>()
            {
              {1 , new Chiikawa()},
              {2 , new Hachiware()}
            };

やること

  1. 型になるインターフェイスを作る(ここではINagano
  2. valueにいれたいクラスに継承(ここではChiikawaHachiware)※newしないとダメだめ

完成したソースがこちら

using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //キャラクターのデータ
            Dictionary<int, INagano> NaganoCharacter = new Dictionary<int, INagano>()
            {
              {1 , new Chiikawa()},
              {2 , new Hachiware()}
            };
            //ユーザーに入力を促す
            Console.WriteLine("住民IDをいれるんだ!!");

            //ユーザーが入力
            int id = int.Parse(Console.ReadLine());

            //入力されたiDからキャラクターのクラスを取得
            INagano character = NaganoCharacter[id];

            //情報を表示
            Console.WriteLine("この子の名前は" + character.Name + "!!!!!!!!!");
        }
    }
    /// <summary>
    /// キャラクターのインターフェイス
    /// </summary>
    public interface INagano
    {
        //おなまえ
        public string Name { get; }

        //住民ID
        public int Id { get; }
    }

    /// <summary>
    /// ちいかわクラス
    /// </summary>
    public class Chiikawa : INagano
    {
        public string Name { get; } = "ちいかわ";
        public int Id { get; } = 1;
    }

    /// <summary>
    /// ハチワレクラス
    /// </summary>
    public class Hachiware : INagano
    {
        public string Name { get; } = "ハチワレ";
        public int Id { get; } = 2;
    }
}
ツイッターでシェア
みんなに共有、忘れないようにメモ

ずずまる@ばぶばぶSE

業務経験1年赤ちゃんSE/設計ワカンナイ/音大卒からノリでSIerに新卒入社/Git bashこそ至高🧘‍♀️#csharp #VisualStudio #エンジニア転職 #Twitter転職 Salesforce学習中

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント