Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
StringPool türü örnekler için string yapılandırılabilir bir havuz uygular. Bu, veya byte değerlerinin arabelleklerinden birden çok string örnek oluştururken ayırmaları char en aza indirmek için kullanılabilir. Havuzun yapılandırılabilir olması, sıfırlanabilmesi, en iyi efor ilkesiyle uygulanması ve nesnelerin önceden örneklemesini string gerektirmemesi ve geçici arabellekler üzerinde çalışırken ilk ayırmaları kaydetmesi gibi temel farklarla birlikte, stajyerlik işlemine biraz benzer string bir mekanizma sağlar.
Platform API'leri: StringPool
Sözdizimi
için StringPool GetOrAdd(ReadOnlySpan<char>) ana giriş noktası, girişin ReadOnlySpan<char>içeriğiyle eşleşen bir string örnek döndüren API'dir ve muhtemelen iç havuzdan döndürülen nesneyi alır.
Örneğin, belirli bir web isteğinin URL'sini temsil eden bir girişimiz string olduğunu ve yalnızca ana bilgisayar adıyla da string almak istediğimizi düşünün. Büyük olasılıkla az sayıda konak için çok sayıda istek alırsak, bu string örnekleri önbelleğe almak isteyebiliriz, bunu aşağıdaki türü kullanarak StringPool yapabiliriz:
public static string GetHost(string url)
{
// We assume the input might start either with eg. https:// (or other prefix),
// or directly with the host name. Furthermore, we also assume that the input
// URL will always have a '/' character right after the host name.
// For instance: "https://learn.microsoft.com/dotnet/api/system.string.intern".
int
prefixOffset = url.AsSpan().IndexOf(stackalloc char[] { ':', '/', '/' }),
startIndex = prefixOffset == -1 ? 0 : prefixOffset + 3,
endIndex = url.AsSpan(startIndex).IndexOf('/');
// In this example, it would be "learn.microsoft.com"
ReadOnlySpan<char> span = url.AsSpan(startIndex, endIndex);
return StringPool.Shared.GetOrAdd(span);
}
Yukarıdaki yöntem, istenen string önbellekte zaten mevcutsa hiçbir ayırma yapmaz. Arama yalnızca ReadOnlySpan<char> giriş olarak yapılır ve giriş URL'sindeki stringbir görünümü temsil eder.
Türü StringPool , utf8 gibi farklı bir kodlama kullanarak ham istekleri ayrıştırırken de yararlı olabilir. Arama için kullanılacak bir GetOrAdd değeri almak için havuzdan kiralanan geçici bir arabelleği kullanan bir giriş ReadOnlySpan<byte> ve Encoding örnek alan bir ReadOnlySpan<char> aşırı yükleme vardır. Bu, belirli bir kullanım örneği senaryosuna bağlı olarak ayırma sayısını büyük ölçüde azaltabilir.
Örnekler
.NET Community Toolkit