Jaahas.StringCache
1.0.0-pre.3
dotnet add package Jaahas.StringCache --version 1.0.0-pre.3
NuGet\Install-Package Jaahas.StringCache -Version 1.0.0-pre.3
<PackageReference Include="Jaahas.StringCache" Version="1.0.0-pre.3" />
<PackageVersion Include="Jaahas.StringCache" Version="1.0.0-pre.3" />
<PackageReference Include="Jaahas.StringCache" />
paket add Jaahas.StringCache --version 1.0.0-pre.3
#r "nuget: Jaahas.StringCache, 1.0.0-pre.3"
#:package Jaahas.StringCache@1.0.0-pre.3
#addin nuget:?package=Jaahas.StringCache&version=1.0.0-pre.3&prerelease
#tool nuget:?package=Jaahas.StringCache&version=1.0.0-pre.3&prerelease
About
Jaahas.StringCache provides a string cache that can provide a more performant alternative to .NET's built-in string.Intern()
method. This library is inspired by Sergey Teplyakov's blog post on string interning performance.
The library offers both custom string caching using ConcurrentDictionary<TKey, TValue>
and a wrapper around native string interning, allowing you to choose the approach that best fits your requirements.
More information can be found on GitHub.
How to Use
Using the Shared Instance
using Jaahas;
// Cache strings using the shared instance
var cached1 = StringCache.Shared.Intern("Hello, World!");
var cached2 = StringCache.Shared.Intern("Hello, World!");
// Both variables reference the same string instance
Console.WriteLine(ReferenceEquals(cached1, cached2)); // True
Using Native Interning
using Jaahas;
// Use native .NET string interning
var interned = StringCache.Native.Intern("Hello World");
Advanced Usage
Creating Custom Instances
For scenarios where you need isolated caching or want to manage cache lifecycle:
using Jaahas;
var cache = new StringCache();
var cached = cache.Intern("Custom cache string");
// Check cache size
Console.WriteLine($"Cache contains {cache.Count} strings");
// Clear the cache when needed
cache.Clear();
Note: The Count
property returns -1 for the Native
instance, and calling Clear()
has no effect.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Jaahas.StringCache:
Package | Downloads |
---|---|
IntelligentPlant.AppStoreConnect.Adapter.Core
Base types for App Store Connect adapters. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
1.0.0-pre.3 | 148 | 8/4/2025 |
1.0.0-pre.2 | 127 | 8/4/2025 |
1.0.0-pre.1 | 94 | 8/3/2025 |