Install-Package Beizsoft.Names -Version 2.0.1
dotnet add package Beizsoft.Names --version 2.0.1
<PackageReference Include="Beizsoft.Names" Version="2.0.1" />
paket add Beizsoft.Names --version 2.0.1
#r "nuget: Beizsoft.Names, 2.0.1"
// Install Beizsoft.Names as a Cake Addin #addin nuget:?package=Beizsoft.Names&version=2.0.1 // Install Beizsoft.Names as a Cake Tool #tool nuget:?package=Beizsoft.Names&version=2.0.1
Name<TStringComparer> class contains a string value and its pre-calculated hash. All instances of
Name<TStringComparer> are interned, meaning each string will have only once
Name<TStringComparer> instance (per string comparer used). The static
Name class provides a
.For(string content) method using the
NullAwareOrdinalStringComparer as the default comparer.
Name<TStringComparer>.For method is used to get or create the singular
Name instance associated with any given string, which can then be compared using its public
Hash field and
ReferenceEquals with other
Names of the same type.
Names which are implemented using a different
INullAwareEqualityComparer<string> are not considered equal.
Name<TStringComparer>.Comparer.Instance provides a single-instance
INullAwareEqualityComparer<Name<TStringComparer>> to use when comparing
Name<TStringComparer>s. This class can also be instantiated, to allow for its use in generic methods with a
Names are designed for use-cases where
Name.For can be called as few times as possible, or where the calls are non-performance-critical. Their ideal use-case is as dictionary keys, avoiding the cost of hashing for every addition, removal and lookup.
NullAwareOrdinalStringComparer could be re-worked to remove a single null check when comparing two strings which are both known not to be null (
NotNullEquals), but for simplicity, the
NullAwareOrdinalStringComparer class uses the in-built string-comparison functionality. A separate package may be added to cover this optimization.
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.