如何在 C# 中从哈希表集合中删除项目?

如何在 c# 中从哈希表集合中删除项目?

Hashtable在C#中是一个基于键的哈希码组织的键值对集合。可以使用键来访问hashtable中的项。C#的Hashtable类是实现hashtable的类。

使用此类,我们可以在提供的构造函数的帮助下创建一个新的哈希表对象。 Hashtable 类还提供了各种方法,我们可以使用它们对哈希表执行各种操作。这些操作包括添加项目、检查指定键是否存在、计算项目数量、从哈希表中删除项目等。

在本文中,我们将讨论从给定指定键的哈希表集合中删除项目。

如何从Hashtable集合中删除项目?

Hashtable类提供了一个名为“Remove”的方法,用于从hashtable集合中删除一个项。给定一个键,Remove方法将从hashtable中删除具有指定键的项。

下面给出了Remove方法的原型。

语法

public virtual void Remove (object key);

参数

Key − 要从哈希表集合中删除的元素的键。这是类型为 System.Object的。

实现

Remove(Object)方法是IDictionary接口的一部分。

异常

ArgumentNullException −如果指定的键为 null,则抛出此异常。

NotSupportedException − 如果哈希表具有固定大小或只读,则抛出。

如果在哈希表中指定的键不存在,Remove() 方法不会抛出任何异常。如果键不存在,哈希表将保持不变,程序将成功执行。

Remove()方法的编程示例

示例 1

以下程序演示了如何使用Remove()方法从哈希表集合中删除项目。

using System;using System.Collections;  class MyHashTable {   public static void Main(){      // Creating a Hashtable      Hashtable numberNames = new Hashtable();        // Adding elements in Hashtable      numberNames.Add("2", "Two");      numberNames.Add("13", "Thirteen");      numberNames.Add("24", "Twenty Four");      numberNames.Add("59", "Fifty Nine");        // Print the contents of Hashtable      Console.WriteLine("**********Contents of Hashtable**********");      foreach(var item in numberNames.Keys){         Console.WriteLine("key ={0}, Value = {1}", item,numberNames[item]);      }        //read the key for which element is to be deleted      Console.WriteLine("Enter the key for which the element is to be removed from Hashtable ");      string key = (string)Console.ReadLine();      //remove the element      numberNames.Remove(key);        //display the hashtable after deletion      Console.WriteLine("******Contents of Hashtable(after deletion)******");      foreach(var item in numberNames.Keys){         Console.WriteLine("key ={0}, Value = {1}", item,numberNames[item]);      }   }}

在这个程序中,首先我们创建了一个哈希表,其中键是数字,值是对应的数字名称。然后将哈希表显示在屏幕上。接下来,提示用户输入要从哈希表中删除元素的键。一旦键被输入,就会调用Remove()方法,并将该键作为参数传递。然后再次显示哈希表的内容。如果键存在于哈希表中,Remove()方法将删除该元素,否则,哈希表将保持不变。

输出

该程序生成以下输出。

**********Contents of Hashtable**********key =59, Value = Fifty Ninekey =24, Value = Twenty Fourkey =13, Value = Thirteenkey =2, Value = TwoEnter the key for which the element is to be removed from Hashtable 13******Contents of Hashtable(after deletion)******key =59, Value = Fifty Ninekey =24, Value = Twenty Fourkey =2, Value = Two

上述输出显示了删除之前和删除之后哈希表内容的差异。

现在让我们来看看当用户输入的键在哈希表中不存在时,输出会如何变化。在这种情况下,正如已经提到的,哈希表保持不变,不会抛出任何异常。以下是上述程序生成的输出。

输出

**********Contents of Hashtable**********key =59, Value = Fifty Ninekey =24, Value = Twenty Fourkey =13, Value = Thirteenkey =2, Value = TwoEnter the key for which the element is to be removed from Hashtable 3******Contents of Hashtable(after deletion)******key =59, Value = Fifty Ninekey =24, Value = Twenty Fourkey =13, Value = Thirteenkey =2, Value = Two

在这里,用户输入了key = 3,但在哈希表中不存在。在这种情况下,由于Remove()方法没有删除任何元素,所以哈希表保持不变。

示例2

现在让我们考虑另一个哈希表删除的例子。相应的程序如下所示。

using System;using System.Collections;public class myHashtable{   public static void Main(){      // Create a new Hashtable.      var tongueTwister = new Hashtable();      tongueTwister.Add("1a", "She");      tongueTwister.Add("1b", "sells");      tongueTwister.Add("1c", "sea");      tongueTwister.Add("2a", "shells");      tongueTwister.Add("2b", "on");      tongueTwister.Add("2c", "the");      tongueTwister.Add("3a", "sea");      tongueTwister.Add("3b", "shore");         // Displays the Hashtable.      Console.WriteLine("The Hashtable initially contains the following:");      foreach (DictionaryEntry elem in tongueTwister)         Console.WriteLine($"    {elem.Key}:    {elem.Value}");      Console.WriteLine();      // Removes the element with the specified key.      string key = “3b”;      tongueTwister.Remove(key);      // Displays the Hashtable after deletion.       Console.WriteLine("Hashtable after removing the key =  "{0}":",key);      foreach (DictionaryEntry elem in tonguetwister)         Console.WriteLine($"    {elem.Key}:    {elem.Value}");      Console.WriteLine();   }}

在这个程序中,我们有一个哈希表,其中包含绕口令“她在海边卖贝壳”。我们将按键编号为 1a、1b、1c、2a、2b 等。首先,我们显示了整个哈希表。然后我们使用Remove()方法并删除key = 3b的元素。新更新的哈希表再次显示。

输出

该程序生成以下输出。

The Hashtable initially contains the following:    3b:    shore    1a:    She    1b:    sells    2b:    on    2c:    the    3a:    sea    2a:    shells    1c:    seaHashtable after removing the key =  "3b":    1a:    She    1b:    sells    2b:    on    2c:    the    3a:    sea    2a:    shells    1c:    seaNote the hashtable after deleting the key = 3b.

Hashtable类的Remove()方法用于逐个删除或删除散列表中的元素。如果散列表中不存在指定的键(方法的参数),Remove()方法不会抛出异常。它将继续执行程序而不改变散列表。

这就是关于Remove()方法的全部内容,用于根据指定的键从哈希表集合中删除项。

以上就是如何在 C# 中从哈希表集合中删除项目?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 10:59:51
下一篇 2025年12月16日 06:47:09

相关推荐

  • 如何在 C# 中使用字符串格式显示最多 2 位小数或简单整数?

    根据指定的格式将对象的值转换为字符串,并将它们插入到另一个字符串中。 Namespace:SystemAssembly:System.Runtime.dll Format 方法的每次重载都使用复合格式设置功能,以在复合格式字符串中包含从零开始的索引占位符(称为格式项)。在运行时,每个格式项都会替换为…

    2025年12月17日
    000
  • C# 中的关键字

    关键字是为 C# 编译器预定义的保留字。这些关键字不能用作标识符。但是,如果您想使用这些关键字作为标识符,则可以在关键字前面加上 @ 字符。 以下是 C# 中的两种类型的关键字。 保留关键字 抽象as基础Bool td>中断字节大小写捕获字符选中类const继续十进制默认委托执行双其他枚举事件…

    2025年12月17日
    000
  • 数组在 C# 中如何工作?

    数组表示给定类型的固定数量的元素。元素存储在连续的内存块中,只要您知道元素的索引,就可以高效地访问元素。 声明和初始化数组的 C# 语法如下 – // create a string array to hold 5 languagesstring[] languages = new st…

    2025年12月17日
    000
  • 我们如何将服务依赖注入到控制器C# Asp.net Core中?

    ASP.NET Core通过构造函数或方法注入依赖类的对象通过使用内置的 IoC 容器。 内置容器由 IServiceProvider 实现表示默认支持构造函数注入。由内置 IoC 管理的类型(类)容器称为服务。 为了让IoC容器自动注入我们的应用服务,我们首先需要将它们注册到IoC容器。 示例 p…

    2025年12月17日
    000
  • C# 中重载方法有哪些不同的方式?

    重载方法的不同方式是 – The datatypes of parameters are differentThe number of parameters are different 下面给出了一个示例,说明参数的不同数据类型 – void print(int i) { C…

    2025年12月17日
    000
  • 如何在 C# 中不使用临时变量交换两个数字

    要交换两个数字,可以使用第三个变量,并执行算术运算符,而不使用临时变量。 设置两个变量进行交换 − val1 = 5;val2 = 10; 现在执行以下交换操作 – val1 = val1 + val2;val2 = val1 – val2;val1 = val1 – val2; 示例 …

    2025年12月17日
    000
  • 创建简单线程的 C# 程序

    为了创建线程,我创建了一个函数 – public void myThread() { for (int i = 0; i < 3; i++) { Console.WriteLine("My Thread"); }} 调用上面的函数来创建一个线程,并创建一个新的 …

    2025年12月17日
    000
  • C# 中的双精度数组?

    C# 中的数组数组称为锯齿数组。要声明交错数组,请使用双精度 [ ][ ]。 现在让我们声明它们 – int [][] marks; 现在,让我们初始化它,其中标记是 5 个整数的数组 – int[][] marks = new int[][]{new int[]{ 90,9…

    2025年12月17日
    000
  • 当 C# 中结果为空时 LINQ 返回什么?

    语言集成查询 (LINQ) 是一组基于将查询功能直接集成到 C# 语言中。 您可以使用 C# 为 SQL Server 数据库、XML 文档、ADO.NET数据集,以及任何支持IEnumerable或者的对象集合generic IEnumerable接口。 在Linq-to-SQL中,如果您尝试在没…

    2025年12月17日
    000
  • 如何在 C# 中限制 Parallel.ForEach?

    Parallel Foreach C# 中的 Parallel.ForEach 循环在多个线程上运行,并且处理以并行方式进行。 Parallel.ForEach 循环不是 C# 的基本功能,从 C# 4.0 及更高版本开始提供。要使用 Parallel.ForEach 循环,我们需要在 using …

    2025年12月17日
    000
  • C# 程序使用 WHERE 子句 LINQ 查找数组中的最大数字

    介绍 在本文中,我们将使用 LINQ 中的 WHERE 子句查找数组中的最大数字。 LINQ(语言集成查询)用于生成 C# 语言的查询。 LINQ 最好的部分是它提供了一个统一的方法源来访问来自不同源(例如数据库和 XML 文档)的数据。借助LINQ,用户可以编写出可读性更好的代码,并且代码更加简洁…

    2025年12月17日
    000
  • C#中的Monitor和Lock有什么区别?

    监视器和锁都提供了同步对象访问的机制。lock 是 Monitor.Enter 和 try 和finally 的快捷方式。 Lock 是一个快捷方式,是基本用法的选项。如果我们需要更多控制来使用 TryEnter()、Wait()、Pulse() 和 & 来实现高级多线程解决方案PulseA…

    2025年12月17日
    000
  • C# 中的文件权限

    对于 C# 中的文件权限,请使用 FileIOPermission 类。它控制访问文件和文件夹的能力。 以下是文件权限类的属性 – Sr.No. 方法及说明 1AllFiles 获取或设置对所有文件的允许访问权限。 2AllLocalFiles 获取或设置对所有本地文件的允许访问权限。 …

    2025年12月17日
    000
  • C#中的文件操作是什么?

    C# 具有以下文件操作 – 创建、打开、读取和写入文件。追加、删除等。 System.IO 命名空间中的 FileStream 类有助于读取、写入和关闭文件。该类派生自抽象类Stream。 您需要创建一个FileStream 对象来创建新文件或打开现有文件。创建 FileStream 对…

    2025年12月17日
    000
  • 使用环境类获取和打印命令行参数的 C# 程序

    简介 让我们看看如何使用 C# 的工具环境类来编写 C# 程序,以使用环境类获取和打印命令行参数。了解了有关 C# 的所有知识后,我们现在将了解 C# 中 system.environment 类的用途之一,然后我们将学习编写一个获取并打印命令行参数的程序。基本上,它将接受字符串作为参数,并将其返回…

    2025年12月17日
    000
  • C# 中的递归方法调用是什么?

    C#中的递归方法调用称为递归。让我们看一个使用递归计算数字幂的示例。 这里,如果幂不等于 0,则发生函数调用,最终是递归 – if (p!=0) { return (n * power(n, p – 1));} 上面,n 是数字本身,每次迭代时功效都会减少,如下所示 – 示例…

    2025年12月17日
    000
  • C# 中的变量参数 (Varargs)

    在 C# 中使用 param 关键字获取变量参数。 让我们看一个整数相乘的示例。我们使用 params 关键字来接受任意数量的 int 值 – static int Multiply(params int[] b) 上面的代码让我们可以求出一个或两个 int 值的数字相乘。以下调用具有多…

    2025年12月17日
    000
  • C# 中所有异常的基类是什么?

    System.SystemException类是所有预定义系统异常的基类。一些派生自System.Exception类的异常类是System.ApplicationException和System.SystemException类。 System.ApplicationException类支持应用程…

    2025年12月17日
    000
  • 如何通过C#应用程序运行外部应用程序?

    可以使用 process 从 c# 应用程序运行外部应用程序。进程是在您的计算机上运行的程序。这可以是任何东西,从小型后台任务(例如拼写检查器或系统事件处理程序)到成熟的应用程序(例如记事本等)。 每个进程都提供执行程序所需的资源。每个进程都由一个线程启动,称为主线程。一个进程除了主线程之外还可以有…

    2025年12月17日
    000
  • C# 中的队列接口

    队列代表先进先出的对象集合。当您需要先进先出访问项目时使用它。当您向列表中添加一个项目时,称为入队,当您删除一个项目时,称为双端队列。 让我们看一个 Queue 类的示例。 要添加元素,请使用 Enqueue – Queue q = new Queue();q.Enqueue(‘X’);…

    2025年12月17日
    000

发表回复

登录后才能评论
关注微信