mdr141
12/16/2018 - 8:29 AM

CSharp_インデクサ

using System;

namespace ConsoleTest
{
    class Program
    {
        static void Main(string[] args)
        {
            var mon = new JapaneseMonth();
            Console.WriteLine(mon["師走"]); // OUTPUT: 12
            Console.WriteLine(mon[12]);    // OUTPUT: 師走

            Console.ReadLine();
        }
    }
}
using System;
namespace ConsoleTest
{
    public class JapaneseMonth
    {
        public JapaneseMonth() { }

        /// <summary>
        /// 和風月名
        /// </summary>
        private string[] _month =
        {
            "睦月", "如月", "彌生", "卯月", "皋月", "水無月",
            "文月", "葉月", "長月", "神無月", "霜月", "師走"
        };

        /// <summary>
        /// 和風月名をキーとして、月(1〜12)を返すインデクサ
        /// </summary>
        /// <param name="name">Name.</param>
        public int this[string name]
        {
            get
            {
                return Array.IndexOf(this._month, name) + 1;
            }
        }

        /// <summary>
        /// 月(1〜12)をキーとして、和風月名を返すインデクサ
        /// (インデクサをオーバーロードしている)
        /// </summary>
        /// <param name="index">Index.</param>
        public string this[int index]
        {
            get
            {
                return this._month[index - 1];
            }
        }
    }
}