骨のダイスを転がそう

2009|01|02|03|04|05|06|07|10|12|
2010|01|02|03|04|05|06|07|08|09|10|11|
2011|02|03|05|06|07|08|09|10|11|12|
2012|01|02|04|05|09|10|11|12|
2013|01|02|04|
2014|11|
2015|01|04|05|
2016|06|07|08|09|11|
2017|01|02|03|04|
2018|03|

2010-08-26

_ [C#] デフォルト値つきのDictionary

ふつうに機能としてありそうなもんだが……。

   public class JDictionary<Tkey, TValue> : Dictionary<Tkey, TValue>
   {
       TValue _default_value;

       public JDictionary(TValue default_value)
       {
           _default_value = default_value;
       }

       public new TValue this[Tkey key]
       {
           set
           {
               base[key] = value;
           }
           get
           {
               return !base.ContainsKey(key) ? _default_value
                                             : base[key]      ;
           }
       }
   }

   class Program
   {
       static void Main(string[] args)
       {
           var test = new JDictionary<string, string>("デフォルト値");
           test["a"] = "apple";
           test["b"] = "banana";
           test["c"] = "cherry";

           Console.WriteLine(test["v"]);
           Console.WriteLine(test["a"]);
           Console.WriteLine(test["m"]);
           Console.WriteLine(test.Count.ToString());
       }
   }