.NET 9.0'da türleri sunar HashSet<T> VE Dictionary<T, T> Biriyle yeni bir unsur yolu ReadOnlySpan<T> aramak için. Bu, dizeler ararken birçok bellek tahsisinden kaçınır.
Holger Schwichtenberg, 53 ünlü uzmanla, danışmanlık ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ölçekli ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.
Örnek: Yarım -colon ile ayrılmış bir ad miktarında, isim için ad aranmalıdır.
Verilir
HashSet<string> suchwoerter =
new HashSet<string>() { "Müller", "Meier", "Schulze" };
string[] datenbasis = """
Müller;Schwichtenberg;Stropek;Krämer
Huber;Meier;Loje
Schulze;Wenz;Schmaranz
...
""".Split("n");
Daha önceki önceki uygulama .NET 9.0 aşağıdaki gibi görünebilir:
foreach (string line in datenbasis)
{
foreach (string n in line.Split(';')) // String-Allokation
{
if (suchwoerter.Contains(n)) fundstellen1++;
}
}
Console.WriteLine(fundstellen1);
.NET 9.0'dan beri yöntemi araştırma kelimeleri için kullanabilirsiniz GetAlternateLookup() Sözde bir “araştırma” yarattı ve sonra biriyle ReadOnlySpan<char> İle ilgili HashSet<T> aramak:
[code]HashSet<T>[/code] suchen:
HashSet<string>.AlternateLookup<ReadOnlySpan<char>> suchwoerter2 =
suchwoerter.GetAlternateLookup<ReadOnlySpan<char>>();
int fundstellen2 = 0;
foreach (string line in datenbasis)
{
ReadOnlySpan<char> lineSpan = line.AsSpan(); // ohne Allokation
foreach (Range range in lineSpan.Split(';'))
{
ReadOnlySpan<char> nameSpan = lineSpan[range]; // ohne Allokation
if (suchwoerter2.Contains(nameSpan)) fundstellen2++;
}
}
Console.WriteLine(fundstellen2);
(RME)

Bir yanıt yazın