예제 #1
0
        /*
         *
         * MultiKeyDictionary mkd = new MultiKeyDictionary();
         * //Checking Add, Get, TryGetValue
         *  //mkd.Add("dsfs", "1", 2, 34L, 3m);
         *  mkd.Add("dsfs", 17L, 3L);
         *  //mkd.Add("dsfs", 17L); //Wrong add dimension is checked
         *  mkd.Add("dsfs3", 17L, 5L);
         *  mkd.Add("dsfs32", 17L, 5L);
         *  mkd.Add("apa", 10L, 7L);
         *  mkd.Add(new List<string> { "w1", "w2" }, 11L, 4L);
         *  var mkdRes = mkd.Get<string>(10L, 7L);
         *  var mkdRes1 = mkd.Get<List<string>>(11L, 4L);
         *  var mkdResBool = mkd.TryGetValue<List<string>>(out var dder, 11L, 4L);
         *  //var mkdResBool1 = mkd.TryGetValue<List<string>>(out var dder1, 11L, 6L);
         *  //var mkdResBool1 = mkd.TryGetValue<List<string>>(out var dder1, 11L);  //Wrong get dimension is checked
         *
         * //Checking Ulongs to longs
         *  mkd.Add("w1", ulong.MaxValue, ulong.MinValue);
         *  mkd.Add("w2", (ulong)1, (ulong)0);
         *  mkd.Add("w3", (ulong)100, (ulong)500);
         *  var v4 = mkd.Get<string>(ulong.MaxValue, ulong.MinValue);
         *  var v41 = mkd.Get<string>((ulong)1, (ulong)0);
         *  var v42 = mkd.Get<string>((ulong)100, (ulong)500);
         *  foreach (var el in mkd.GetAll())
         *  {
         *      ulong k1 = MultiKeyDictionary.MapLongToUlong((long)el[0]);
         *      ulong k2 = MultiKeyDictionary.MapLongToUlong((long)el[1]);
         *      string val = (string)el[2];
         *  }
         * //Checking GetAll
         * //mkd.Add("w1", int.MaxValue);
         *  //mkd.Add("w2", (int)1);
         *  //mkd.Add("w3", (int)100);
         *  //mkd.Add("w1", int.MaxValue, int.MinValue);
         *  //mkd.Add("w2", (int)1, (int)0);
         *  //mkd.Add("w3", (int)100, (int)500);
         *  //mkd.Add("w1", int.MaxValue, int.MinValue);
         *  //mkd.Add("w2", (int)1, (int)0);
         *  //mkd.Add("w21", (int)1, (int)1);
         *  //mkd.Add("w21", (int)1, (int)2);
         *  //mkd.Add("w3", (int)100, (int)500);
         *  mkd.Add("w1", int.MaxValue, int.MinValue, 12);
         *  mkd.Add("w1", int.MaxValue, int.MinValue, 14);
         *  mkd.Add("w2", (int)1, (int)0, 44);
         *  mkd.Add("w21", (int)1, (int)1, 12);
         *  mkd.Add("w21", (int)1, (int)1, 13);
         *  mkd.Add("w21", (int)1, (int)2, 22);
         *  mkd.Add("w3", (int)100, (int)500, 15);
         *  mkd.Add("w3", (int)100, (int)500, 16);
         *  //mkd.Add("w1", ulong.MaxValue, ulong.MinValue);
         *  //mkd.Add("w2", (ulong)1, (ulong)0);
         *  //mkd.Add("w3", (ulong)100, (ulong)500);
         *  //var v4 = mkd.Get<string>(ulong.MaxValue, ulong.MinValue);
         *  //var v41 = mkd.Get<string>((ulong)1, (ulong)0);
         *  //var v42 = mkd.Get<string>((ulong)100, (ulong)500);
         *  foreach (var el in mkd.GetAll())
         *  {
         *      //ulong k1 = MultiKeyDictionary.MapLongToUlong((long)el[0]);
         *      //ulong k2 = MultiKeyDictionary.MapLongToUlong((long)el[1]);
         *      //string val = (string)el[2];
         *  }
         */
        #endregion

        /// <summary>
        /// MultiKeySortedDictionary
        /// </summary>
        public MultiKeySortedDictionary()
        {
            _key = default(TKey);

            MultiKeyDictionary.CreateDeconstructDelegate(_key.Length, _key.GetType(), ref this.Impl);
            //MKDHelper.CreateSerializeDelegate(_key.Length, _key.GetType(), this.serSeq);
        }
 void Init()
 {
     if (this.Impl == null)
     {
         lock (initLock)
         {
             if (this.Impl == null)
             {
                 MultiKeyDictionary.CreateDeconstructDelegate(_key.Length, _key.GetType(), ref this.Impl);
             }
         }
     }
 }