如何在 C# 中检查 Hashtable 中是否存在键?
C# 中的 Hashtable 类表示键值对的集合。这些键值对根据使用哈希码函数计算的键的哈希码进行组织。
Hashtable 中的键用于访问项。因此,给定一个键,我们可以在 Hashtable 中访问该键对应的值。Hashtable 中的键是唯一且非空的。但是,值可以为空或重复。
在我们之前的教程中,我们一直在讨论 Hashtable 主题。我们将在本文中继续这一趋势。在本文中,我们将讨论如何检查 Hashtable 集合中是否存在键。
所以让我们开始吧。
如何检查 Hashtable 中是否存在键?
Hashtable 类提供了两种方法来帮助我们检查 Hashtable 中是否存在键。这两种方法分别是 ContainsKey() 和 Contains()。我们将逐一讨论这些方法。
方法 | 描述 |
---|---|
ContainsKey(object key) | 如果键存在则返回 true,否则返回 false。 |
Contains() | 如果键存在则返回 true,否则返回 false。 |
ContainsKey() 方法
Hashtable 类的 ContainsKey() 方法以键对象作为参数,如果此键对象存在于 Hashtable 中,则返回 true。如果 Hashtable 中不存在具有指定键的元素,则返回 false。
以下是 ContainsKey() 方法的一般原型。
语法
public virtual bool ContainsKey(object key);
参数
Key − 要在 Hashtable 中查找的 System.object 类型的键。
返回类型
True − 如果 Hashtable 包含具有指定键的元素。
False − Hashtable 不包含具有指定键的元素。
异常
ArgumentNullException − 如果键为空。
示例
以下程序演示了如何使用 ContainsKey() 方法检查 Hashtable 中是否存在键。
using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable myHashTable = new Hashtable(); // Add elements in Hashtable myHashTable.Add("P", "Program"); myHashTable.Add("T", "To"); myHashTable.Add("F", "Find"); myHashTable.Add("K", "Key"); String key; Console.WriteLine("Enter the key which is to be found:"); key = Console.ReadLine(); if(key != ""){ if (myHashTable.ContainsKey(key)) Console.WriteLine("myHashTable contains the key={0}",key); else Console.WriteLine("myHashTable doesn't contain the key={0}",key); } } }
在此程序中,我们有一个包含五个元素的 Hashtable myHashTable。然后,程序提示用户输入要查找的键。当用户输入键时,将使用输入的键作为参数执行 ContainsKey() 方法。如果该方法返回 true,则程序显示一条适当的消息。如果该方法返回 false,则表示该键不存在,并显示一条适当的消息。
当用户输入键并且 ContainsKey() 方法返回 true 时,将生成以下输出。
输出
Enter the key which is to be found: P myHashTable contains the key=P
由于 Hashtable 中存在一个具有给定键 (P) 的元素,因此 ContainsKey() 方法返回 true。然后,程序显示一条适当的消息。
现在让我们重新运行程序并生成第二个输出,如下所示。
输出
Enter the key whose value is to be found: X myHashTable doesn't contain the key=X
此处显示的消息表明 Hashtable 不包含该键。输入的键是 X,它不是 Hashtable 的一部分。因此,ContainsKey() 方法返回 false。
Contains() 方法
Contains() 方法是另一种用于检查 Hashtable 中是否存在键的方法。与 ContainsKey() 方法类似,Contains() 方法也以键对象作为参数,并搜索 Hashtable 以检查 Hashtable 中是否存在具有指定键的元素。
Contains() 方法的原型如下所示。
语法
public virtual bool Contains (object key);
参数
Key − 要在 Hashtable 中查找的键对象。
返回类型
True − Hashtable 包含具有指定键的元素。
False − Hashtable 不包含具有指定键的元素。
异常
如果键为空,则此方法会引发 ArgumentNullException。
示例
下一个程序演示了 Contains() 方法的使用。
using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable myHashTable = new Hashtable(); // Add elements in Hashtable myHashTable.Add("P", "Program"); myHashTable.Add("T", "To"); myHashTable.Add("F", "Find"); myHashTable.Add("K", "Key"); String key = "F"; if(key != ""){ if (myHashTable.Contains(key)) Console.WriteLine("myHashTable contains the key={0}",key); else Console.WriteLine("myHashTable doesn't contain the key={0}",key); } } }
该程序与上一个程序类似,除了方法更改之外。这里我们指定 key = “F”。调用带键作为参数的 contains() 方法,并在遍历 Hashtable 后返回适当的值。根据返回的值,显示程序的输出。
当用户输入 key = F 时,程序生成以下输出。
输出
myHashTable contains the key=F
输出表明 Hashtable 包含该键,因为 Hashtable 中存在具有指定键的元素,因此 Contains() 方法返回 true。
在本文中,我们讨论了 ContainsKey() 和 Contains() 方法,它们用于检查 Hashtable 集合中是否存在指定的键。我们还看到了编程示例以理解这个概念。我们将在后续教程中学习更多概念。