/* * * 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); } } } }