Hashtable.ContainsValue(Object) 方法

定义

确定 Hashtable 是否包含特定值。

public:
 virtual bool ContainsValue(System::Object ^ value);
public virtual bool ContainsValue (object value);
public virtual bool ContainsValue (object? value);
abstract member ContainsValue : obj -> bool
override this.ContainsValue : obj -> bool
Public Overridable Function ContainsValue (value As Object) As Boolean

参数

value
Object

要在 Hashtable 中定位的值。 该值可以为 null

返回

如果 true 包含具有指定 Hashtable 的元素,则为 value;否则为 false

示例

下面的示例演示如何确定 是否 Hashtable 包含特定元素。

using namespace System;
using namespace System::Collections;
void PrintIndexAndKeysAndValues( Hashtable^ myHT );
int main()
{
   
   // Creates and initializes a new Hashtable.
   Hashtable^ myHT = gcnew Hashtable;
   myHT->Add( (int^)0, "zero" );
   myHT->Add( 1, "one" );
   myHT->Add( 2, "two" );
   myHT->Add( 3, "three" );
   myHT->Add( 4, "four" );
   
   // Displays the values of the Hashtable.
   Console::WriteLine( "The Hashtable contains the following values:" );
   PrintIndexAndKeysAndValues( myHT );
   
   // Searches for a specific key.
   int myKey = 2;
   Console::WriteLine( "The key \"{0}\" is {1}.", myKey, myHT->ContainsKey( myKey ) ? (String^)"in the Hashtable" : "NOT in the Hashtable" );
   myKey = 6;
   Console::WriteLine( "The key \"{0}\" is {1}.", myKey, myHT->ContainsKey( myKey ) ? (String^)"in the Hashtable" : "NOT in the Hashtable" );
   
   // Searches for a specific value.
   String^ myValue = "three";
   Console::WriteLine( "The value \"{0}\" is {1}.", myValue, myHT->ContainsValue( myValue ) ? (String^)"in the Hashtable" : "NOT in the Hashtable" );
   myValue = "nine";
   Console::WriteLine( "The value \"{0}\" is {1}.", myValue, myHT->ContainsValue( myValue ) ? (String^)"in the Hashtable" : "NOT in the Hashtable" );
}

void PrintIndexAndKeysAndValues( Hashtable^ myHT )
{
   int i = 0;
   Console::WriteLine( "\t-INDEX-\t-KEY-\t-VALUE-" );
   IEnumerator^ myEnum = myHT->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      DictionaryEntry de =  *safe_cast<DictionaryEntry ^>(myEnum->Current);
      Console::WriteLine( "\t[{0}]:\t{1}\t{2}", i++, de.Key, de.Value );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 The Hashtable contains the following values:
         -INDEX- -KEY-   -VALUE-
         [0]:    4       four
         [1]:    3       three
         [2]:    2       two
         [3]:    1       one
         [4]:    0       zero

 The key "2" is in the Hashtable.
 The key "6" is NOT in the Hashtable.
 The value "three" is in the Hashtable.
 The value "nine" is NOT in the Hashtable.

 */
using System;
using System.Collections;
public class SamplesHashtable
{

   public static void Main()
   {
      // Creates and initializes a new Hashtable.
      var myHT = new Hashtable();
      myHT.Add(0, "zero");
      myHT.Add(1, "one");
      myHT.Add(2, "two");
      myHT.Add(3, "three");
      myHT.Add(4, "four");

      // Displays the values of the Hashtable.
      Console.WriteLine("The Hashtable contains the following values:");
      PrintIndexAndKeysAndValues(myHT);

      // Searches for a specific key.
      int myKey = 2;
      Console.WriteLine("The key \"{0}\" is {1}.", myKey, myHT.ContainsKey(myKey) ? "in the Hashtable" : "NOT in the Hashtable");
      myKey = 6;
      Console.WriteLine("The key \"{0}\" is {1}.", myKey, myHT.ContainsKey(myKey) ? "in the Hashtable" : "NOT in the Hashtable");

      // Searches for a specific value.
      var myValue = "three";
      Console.WriteLine("The value \"{0}\" is {1}.", myValue, myHT.ContainsValue( myValue ) ? "in the Hashtable" : "NOT in the Hashtable");
      myValue = "nine";
      Console.WriteLine("The value \"{0}\" is {1}.", myValue, myHT.ContainsValue( myValue ) ? "in the Hashtable" : "NOT in the Hashtable");
   }

   public static void PrintIndexAndKeysAndValues(Hashtable myHT)
   {
      int i = 0;
      Console.WriteLine("\t-INDEX-\t-KEY-\t-VALUE-");
      foreach (DictionaryEntry de in myHT)
         Console.WriteLine($"\t[{i++}]:\t{de.Key}\t{de.Value}");
      Console.WriteLine();
   }
}


/*
This code produces the following output.

The Hashtable contains the following values:
        -INDEX- -KEY-   -VALUE-
        [0]:    4       four
        [1]:    3       three
        [2]:    2       two
        [3]:    1       one
        [4]:    0       zero

The key "2" is in the Hashtable.
The key "6" is NOT in the Hashtable.
The value "three" is in the Hashtable.
The value "nine" is NOT in the Hashtable.

*/
Imports System.Collections

Public Class SamplesHashtable

    Public Shared Sub Main()

        ' Creates and initializes a new Hashtable.
        Dim myHT As New Hashtable()
        myHT.Add(0, "zero")
        myHT.Add(1, "one")
        myHT.Add(2, "two")
        myHT.Add(3, "three")
        myHT.Add(4, "four")

        ' Displays the values of the Hashtable.
        Console.WriteLine("The Hashtable contains the following values:")
        PrintIndexAndKeysAndValues(myHT)

        ' Searches for a specific key.
        Dim myKey As Integer = 2
        Console.Write($"The key ""{myKey}"" is ")
        If (myHT.ContainsKey(myKey))
           Console.WriteLine("in the Hashtable.")
        Else
           Console.WriteLine("NOT in the Hashtable.")
        End If

        myKey = 6
        Console.Write($"The key ""{myKey}"" is ")
        If (myHT.ContainsKey(myKey))
           Console.WriteLine(" in the Hashtable.")
        Else
           Console.WriteLine(" NOT in the Hashtable.")
        End If

        ' Searches for a specific value.
        Dim myValue As String = "three"
        Console.Write("The value ""{0}"" is ", myValue)
        If (myHT.ContainsValue(myValue))
           Console.WriteLine(" in the Hashtable.")
        Else
           Console.WriteLine(" NOT in the Hashtable.")
        End If

        myValue = "nine"
        Console.Write($"The value ""{myValue}"" is ")
        If (myHT.ContainsValue(myValue))
           Console.WriteLine(" in the Hashtable.")
        Else
           Console.WriteLine(" NOT in the Hashtable.")
        End If

    End Sub

    Public Shared Sub PrintIndexAndKeysAndValues(myHT As Hashtable)
        Dim i As Integer = 0
        Console.WriteLine(vbTab + "-INDEX-" + vbTab + "-KEY-" + vbTab + "-VALUE-")
        For Each de As DictionaryEntry In myHT
            Console.WriteLine(vbTab + "[{0}]:" + vbTab + "{1}" + vbTab + "{2}", i, de.Key, de.Value)
            i += 1
        Next
        Console.WriteLine()
    End Sub

End Class


' This code produces the following output.
' 
' The Hashtable contains the following values:
'         -INDEX- -KEY-   -VALUE-
'         [0]:    4       four
'         [1]:    3       three
'         [2]:    2       two
'         [3]:    1       one
'         [4]:    0       zero
'
' The key "2" is in the Hashtable.
' The key "6" is  NOT in the Hashtable.
' The value "three" is  in the Hashtable.
' The value "nine" is  NOT in the Hashtable.

注解

使用 Object.Equals 方法将 Hashtable 的元素的值与指定的值进行比较。

此方法执行线性搜索;因此,此方法是一个 O(n) 操作,其中 nCount

从 .NET Framework 2.0 开始,此方法使用 集合的对象 EqualsCompareTo 方法item来确定项是否存在。 在早期版本的 .NET Framework中,此确定是通过对集合中的 对象使用 Equals 参数的 itemCompareTo 方法做出的。

适用于

另请参阅