ConcurrentDictionary<TKey,TValue>.TryRemove Method

Definition

Overloads

TryRemove(TKey, TValue)

尝试从 ConcurrentDictionary<TKey,TValue> 中移除并返回具有指定键的值。Attempts to remove and return the value that has the specified key from the ConcurrentDictionary<TKey,TValue>.

TryRemove(KeyValuePair<TKey,TValue>)

TryRemove(TKey, TValue)

尝试从 ConcurrentDictionary<TKey,TValue> 中移除并返回具有指定键的值。Attempts to remove and return the value that has the specified key from the ConcurrentDictionary<TKey,TValue>.

public:
 bool TryRemove(TKey key, [Runtime::InteropServices::Out] TValue % value);
public bool TryRemove (TKey key, out TValue value);
member this.TryRemove : 'Key * 'Value -> bool
Public Function TryRemove (key As TKey, ByRef value As TValue) As Boolean

Parameters

key
TKey

要移除并返回的元素的键。The key of the element to remove and return.

value
TValue

当此方法返回时,将包含从 ConcurrentDictionary<TKey,TValue> 中移除的对象;如果 TValue 不存在,则包含 key 类型的默认值。When this method returns, contains the object removed from the ConcurrentDictionary<TKey,TValue>, or the default value of the TValue type if key does not exist.

Returns

Boolean

如果成功地移除了对象,则为 true;否则为 falsetrue if the object was removed successfully; otherwise, false.

Exceptions

keynullkey is null.

Examples

下面的示例演示如何调用 ConcurrentDictionary<TKey,TValue>.TryRemove 方法:The following example shows how to call the ConcurrentDictionary<TKey,TValue>.TryRemove method:

class CD_TryXYZ
{
        // Demonstrates:
        //      ConcurrentDictionary<TKey, TValue>.TryAdd()
        //      ConcurrentDictionary<TKey, TValue>.TryUpdate()
        //      ConcurrentDictionary<TKey, TValue>.TryRemove()
        static void Main()
        {
            int numFailures = 0; // for bookkeeping

            // Construct an empty dictionary
            ConcurrentDictionary<int, String> cd = new ConcurrentDictionary<int, string>();

            // This should work
            if (!cd.TryAdd(1, "one"))
            {
                Console.WriteLine("CD.TryAdd() failed when it should have succeeded");
                numFailures++;
            }

            // This shouldn't work -- key 1 is already in use
            if (cd.TryAdd(1, "uno"))
            {
                Console.WriteLine("CD.TryAdd() succeeded when it should have failed");
                numFailures++;
            }

            // Now change the value for key 1 from "one" to "uno" -- should work
            if (!cd.TryUpdate(1, "uno", "one"))
            {
                Console.WriteLine("CD.TryUpdate() failed when it should have succeeded");
                numFailures++;
            }

            // Try to change the value for key 1 from "eine" to "one"
            //    -- this shouldn't work, because the current value isn't "eine"
            if (cd.TryUpdate(1, "one", "eine"))
            {
                Console.WriteLine("CD.TryUpdate() succeeded when it should have failed");
                numFailures++;
            }

            // Remove key/value for key 1.  Should work.
            string value1;
            if (!cd.TryRemove(1, out value1))
            {
                Console.WriteLine("CD.TryRemove() failed when it should have succeeded");
                numFailures++;
            }

            // Remove key/value for key 1.  Shouldn't work, because I already removed it
            string value2;
            if (cd.TryRemove(1, out value2))
            {
                Console.WriteLine("CD.TryRemove() succeeded when it should have failed");
                numFailures++;
            }

            // If nothing went wrong, say so
            if (numFailures == 0) Console.WriteLine("  OK!");
        }
}
'Imports System.Collections.Concurrent

Class CD_TryXYZ

    ' Demonstrates:
    ' ConcurrentDictionary<TKey, TValue>.TryAdd()
    ' ConcurrentDictionary<TKey, TValue>.TryUpdate()
    ' ConcurrentDictionary<TKey, TValue>.TryRemove()
    Shared Sub Main()
        Dim numFailures As Integer = 0
        ' for bookkeeping
        ' Construct an empty dictionary
        Dim cd As ConcurrentDictionary(Of Integer, [String]) = New ConcurrentDictionary(Of Integer, String)()

        ' This should work
        If Not cd.TryAdd(1, "one") Then
            Console.WriteLine("CD.TryAdd() failed when it should have succeeded")
            numFailures += 1
        End If

        ' This shouldn't work -- key 1 is already in use
        If cd.TryAdd(1, "uno") Then
            Console.WriteLine("CD.TryAdd() succeeded when it should have failed")
            numFailures += 1
        End If

        ' Now change the value for key 1 from "one" to "uno" -- should work
        If Not cd.TryUpdate(1, "uno", "one") Then
            Console.WriteLine("CD.TryUpdate() failed when it should have succeeded")
            numFailures += 1
        End If

        ' Try to change the value for key 1 from "eine" to "one" 
        ' -- this shouldn't work, because the current value isn't "eine"
        If cd.TryUpdate(1, "one", "eine") Then
            Console.WriteLine("CD.TryUpdate() succeeded when it should have failed")
            numFailures += 1
        End If

        ' Remove key/value for key 1. Should work.
        Dim value1 As String = ""
        If Not cd.TryRemove(1, value1) Then
            Console.WriteLine("CD.TryRemove() failed when it should have succeeded")
            numFailures += 1
        End If

        ' Remove key/value for key 1. Shouldn't work, because I already removed it
        Dim value2 As String = ""
        If cd.TryRemove(1, value2) Then
            Console.WriteLine("CD.TryRemove() succeeded when it should have failed")
            numFailures += 1
        End If

        ' If nothing went wrong, say so
        If numFailures = 0 Then
            Console.WriteLine(" OK!")
        End If
    End Sub
End Class

See also

TryRemove(KeyValuePair<TKey,TValue>)

public:
 bool TryRemove(System::Collections::Generic::KeyValuePair<TKey, TValue> item);
public bool TryRemove (System.Collections.Generic.KeyValuePair<TKey,TValue> item);
member this.TryRemove : System.Collections.Generic.KeyValuePair<'Key, 'Value> -> bool
Public Function TryRemove (item As KeyValuePair(Of TKey, TValue)) As Boolean

Parameters

Returns

Boolean

Applies to