diff --git a/src/Markdig/Helpers/CharacterMap.cs b/src/Markdig/Helpers/CharacterMap.cs index 73ed3322..a33562ec 100644 --- a/src/Markdig/Helpers/CharacterMap.cs +++ b/src/Markdig/Helpers/CharacterMap.cs @@ -51,10 +51,7 @@ public CharacterMap(IEnumerable> maps) { nonAsciiMap ??= []; - if (!nonAsciiMap.ContainsKey(openingChar)) - { - nonAsciiMap[openingChar] = state.Value; - } + nonAsciiMap.TryAdd(openingChar, state.Value); } } diff --git a/src/Markdig/Parsers/ParserList.cs b/src/Markdig/Parsers/ParserList.cs index ec0db494..3d52ee5b 100644 --- a/src/Markdig/Parsers/ParserList.cs +++ b/src/Markdig/Parsers/ParserList.cs @@ -38,11 +38,10 @@ protected ParserList(IEnumerable parsersArg) : base(parsersArg) { foreach (var openingChar in parser.OpeningCharacters) { - if (!charCounter.ContainsKey(openingChar)) + if (!charCounter.TryAdd(openingChar, 1)) { - charCounter[openingChar] = 0; + charCounter[openingChar]++; } - charCounter[openingChar]++; } } else diff --git a/src/Markdig/Polyfills/DictionaryExtensions.cs b/src/Markdig/Polyfills/DictionaryExtensions.cs new file mode 100644 index 00000000..fbf6f2a4 --- /dev/null +++ b/src/Markdig/Polyfills/DictionaryExtensions.cs @@ -0,0 +1,23 @@ +// Copyright (c) Alexandre Mutel. All rights reserved. +// This file is licensed under the BSD-Clause 2 license. +// See the license.txt file in the project root for more information. + +#if !(NETSTANDARD2_1_OR_GREATER || NET) + +namespace System.Collections.Generic; + +internal static class DictionaryExtensions +{ + public static bool TryAdd(this Dictionary dictionary, TKey key, TValue value) where TKey : notnull + { + if (!dictionary.ContainsKey(key)) + { + dictionary[key] = value; + return true; + } + + return false; + } +} + +#endif diff --git a/src/Markdig/Syntax/LinkReferenceDefinitionGroup.cs b/src/Markdig/Syntax/LinkReferenceDefinitionGroup.cs index 9f79636a..b942ab6e 100644 --- a/src/Markdig/Syntax/LinkReferenceDefinitionGroup.cs +++ b/src/Markdig/Syntax/LinkReferenceDefinitionGroup.cs @@ -40,10 +40,7 @@ public void Set(string label, LinkReferenceDefinition link) if (!Contains(link)) { Add(link); - if (!Links.ContainsKey(label)) - { - Links[label] = link; - } + Links.TryAdd(label, link); } }