public void TryGetValueSafe() { var keys = new[] { "abcdefgh", "abcdefghabcd1", "abcdefghabcd2", "zeregzfw", "takohogergahu", "rezhgoerghouerhgouerhozughoreughozheorugheoghozuehrouehogreuhgoeuz", "mp1", "mp2", "mp3", "mp4", "mp5" }; var automata = new AutomataDictionary(); for (int i = 0; i < keys.Length; i++) { automata.Add(keys[i], i); } for (int i = 0; i < keys.Length; i++) { var enc = Encoding.UTF8.GetBytes(keys[i]); int v; automata.TryGetValueSafe(new ArraySegment <byte>(enc, 0, enc.Length), out v).IsTrue(); v.Is(i); } }
public Tuple <T1> Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver) { if (reader.ReadIsNull()) { return(null); } T1 item1 = default(T1); var count = 0; reader.ReadIsBeginObjectWithVerify(); while (!reader.ReadIsEndObjectWithSkipValueSeparator(ref count)) { var keyString = reader.ReadPropertyNameSegmentRaw(); int key; #if NETSTANDARD dictionary.TryGetValue(keyString, out key); #else dictionary.TryGetValueSafe(keyString, out key); #endif switch (key) { case 0: item1 = formatterResolver.GetFormatterWithVerify <T1>().Deserialize(ref reader, formatterResolver); break; default: reader.ReadNextBlock(); break; } } return(new Tuple <T1>(item1)); }