Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C# 4.0 ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство - 2011Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 247

Автор Π“Π΅Ρ€Π±Π΅Ρ€Ρ‚ Π¨ΠΈΠ»Π΄Ρ‚

HashSet<T> ΠΈΠΌΠ΅Π΅Ρ‚ динамичСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π² Π½Π΅ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ.

НиТС пСрСчислСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ конструкторы, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π² классС HashSet<T>.

public -HashSetO

public HashSet(IEnumerable<T> collection) public HashSet(IEqualityCompare comparer)

public HashSet(IEnumerable<T> collection, IEqualityCompare comparer)

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора создаСтся пустоС мноТСство, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ β€” мноТСство, состоящСС ΠΈΠ· элСмСнтов ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ collection. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора допускаСтся ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ способ сравнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° comparer. А Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ создаСтся мноТСство, состоящСС ΠΈΠ· элСмСнтов ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ collection, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ способ сравнСния comparer. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ пятая Ρ„ΠΎΡ€ΠΌΠ° конструктора Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ допускаСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ упорядочСнными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ классС HashSet<T> рСализуСтся интСрфСйс ISet<T>, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Π½Π΅ΠΌ прСдоставляСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со мноТСствами. Π’ этом классС прСдоставляСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ RemoveWhere (), ΡƒΠ΄Π°Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· мноТСства элСмСнты, Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ.

Помимо свойств, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² интСрфСйсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² классС HashSet<T>, Π² Π½Π΅Π³ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ свойство Comparer, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅.

public IEqualityComparer<T> Comparer { get; }

Оно позволяСт ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ сравнСния для Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ…Π΅Ρˆ-мноТСства.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ примСнСния класса HashSet<T>.

// ΠŸΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ класса HashSet<T>. using System;

using System.Collections.Generic;

class HashSetDemo {

static void Show(string msg, HashSet<char> set) {

Console.Write(msg); foreach(char ch in set)

Console.Write(ch + " ");

Console.WriteLine ();

}

static void Main() {

HashSet<char> setA = new HashSet<char> ();

HashSet<char> setB = new HashSet<char> ();

setA.Add('A'); setA.Add(' Π’'); setA.Add('C') ;

setB.Add('Π‘') ; setB.Add(' D1 );

setB.Add('Π•');

Show("Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ содСрТимоС мноТСства setA: ", setA);

Show("Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ содСрТимоС мноТСства setB: ", setB);

setA.SymmetricExceptWith(setB);

Show("Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ мноТСства setA послС " +

"разноимСнности со мноТСством SetB: ", setA);

setA.UnionWith(setB);

Show("Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ мноТСства setA послС " +

"объСдинСния со мноТСством SetB: ", setA);

setA.ExceptWith(setB);

Show("Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ мноТСства setA послС " +

"вычитания ΠΈΠ· мноТСства setB: ", setA);

Console.WriteLine();

}

}

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ содСрТимоС мноТСства setA: ABC Π˜ΡΡ…ΠΎΠ΄Π½ΠΎΠ΅ содСрТимоС мноТСства setB: Π‘ D Π•

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ мноТСства setA послС разноимСнности со мноТСством SetB: А Π’ D Π• Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ мноТСства setA послС объСдинСния со мноТСством SetB: А Π’ D Π• Π‘ Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ мноТСства setA послС вычитания ΠΈΠ· мноТСства setB: А Π’

Класс SortedSet<T>

Класс SortedSet<T> прСдставляСт собой Π½ΠΎΠ²ΡƒΡŽ Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π² Π²Π΅Ρ€ΡΠΈΡŽ 4.0 срСды .NET Framework. Π’ Π½Π΅ΠΌ поддСрТиваСтся коллСкция, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ отсортированноС мноТСство. Π’ классС SortedSet<T> Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ интСрфСйсы ISet<T>, ICollection, ICollection<T>, IEnumerable, IEnumerable<T>, ISerializable, Π° Ρ‚Π°ΠΊΠΆΠ΅ IDeserializationCallback. Π’ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° SortedSet<T> рСализуСтся мноТСство, всС элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Π˜Π½Ρ‹ΠΌΠΈ словами, Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚Ρ‹ Π² Ρ‚Π°ΠΊΠΎΠΌ мноТСствС Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ. Π’ классС SortedSet<T> опрСдСляСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с мноТСством, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² интСрфСйсС ISet<T>, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ пСрСсСчСниС, объСдинСниС ΠΈ Ρ€Π°Π·Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΡΡ‚ΡŒ. Благодаря Ρ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° SortedSet<T> ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² отсортированном порядкС, класс SortedSet<T> оказываСтся ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ срСдством для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с отсортированными мноТСствами ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Ρ‚ΠΈΠΏΠ° SortedSet<T> ΠΈΠΌΠ΅Π΅Ρ‚ динамичСский Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ всС элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π² Π½Π΅ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ.

НиТС пСрСчислСны Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ конструктора, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² классС SortedSet<T>.

public SortedSetO

public SortedSet(IEnumerable<T> collection) public SortedSet(IComparer comparer)

public SortedSet(IEnumerable<T> collection, IComparer comparer)

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора создаСтся пустоС мноТСство, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ β€” мноТСство, состоящСС ΠΈΠ· элСмСнтов ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ collection. Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ конструктора допускаСтся ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ способ сравнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° comparer. А Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ создаСтся мноТСство, состоящСС ΠΈΠ· элСмСнтов ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ collection, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ способ сравнСния comparer. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ пятая Ρ„ΠΎΡ€ΠΌΠ° конструктора Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ допускаСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мноТСство ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ упорядочСнными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ классС SortedSet<T> рСализуСтся интСрфСйс ISet<T>, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π² Π½Π΅ΠΌ прСдоставляСтся ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со мноТСствами. Π’ этом классС прСдоставляСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ GetViewBetween (), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ‡Π°ΡΡ‚ΡŒ мноТСства Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° SortedSet<T>, ΠΌΠ΅Ρ‚ΠΎΠ΄ RemoveWhere (), ΡƒΠ΄Π°Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ· мноТСства элСмСнты, Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ Reverse (), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° IEnumerable<T>, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ цикличСски ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ мноТСство Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС.

Помимо свойств, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π² интСрфСйсах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² классС SortedSet<T>, Π² Π½Π΅Π³ΠΎ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅.

public IComparer<T> Comparer { get; } public T Max { get; } public T Min { get; }

Бвойство Comparer ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ способ сравнСния для Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ мноТСства. Бвойство ΠœΠ°Ρ… ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ мноТСствС, Π° свойство Min β€” наимСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ мноТСствС.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° примСнСния класса SortedSet<T> Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ HashSet Π½Π° SortedSet Π² исходном ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»Π°, посвящСнного коллСкциям Ρ‚ΠΈΠΏΠ° HashSet<T>.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ

Π’ Π²Π΅Ρ€ΡΠΈΡŽ 4.0 срСды .NET Framework Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½ System. Collections . Concurrent. Оно содСрТит ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ потокобСзопасными ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π³Π΄Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ доступ ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ со стороны Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ большС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ исполняСмых ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². НиТС пСрСчислСны классы ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ.

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ коллСкция

ОписаниС

BlockingCollection<T>

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ для Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса IProducerConsumerCollection<T>

ConcurrentBag<T>

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса

IProducerConsumerCollection<T>, которая ΠΎΠΊΠ°Π·Ρ‹Π²Π°

Стся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΠΉ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° информация вырабатываСтся ΠΈ потрСбляСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅

ConcurrentDictionary

БохраняСт ΠΏΠ°Ρ€Ρ‹ β€œΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅", Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°Π»

<TKey, TValue>

Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

ConcurrentQueue<T>

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ интСрфСйса IProducerConsumerCollection<T>

ConcurrentStack<T>

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ стСк ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ интСрфСйса IproducerConsumerCollection<T>

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… классах ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ рСализуСтся интСрфСйс IProducerConsumerCollection. Π­Ρ‚ΠΎΡ‚ интСрфСйс Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² пространствС ΠΈΠΌΠ΅Π½ System. Collections . Concurrent. Он слуТит Π² качСствС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ интСрфСйсов IEnumerable, IEnumerable<T> ΠΈ ICollection. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π½Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ TryAdd () ΠΈ TryTake (), ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ шаблон "поставщик-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ". (ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ шаблон "поставщик-ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŒ" отличаСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… Π·Π°Π΄Π°Ρ‡. ΠŸΠ΅Ρ€Π²Π°Ρ Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ элСмСнты ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ, Π° другая потрСбляСт ΠΈΡ….) ΠœΠ΅Ρ‚ΠΎΠ΄ TryAdd () пытаСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ, Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ TryTake () β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹ объявлСния ΠΎΠ±ΠΎΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².