詳解C#對Dictionary內(nèi)容的通用操作
一、實(shí)現(xiàn)效果
1.1實(shí)現(xiàn)的功能
①添加信息到字典中;
②根據(jù)鍵獲取值;
③根據(jù)值獲取鍵;
④修改指定鍵的值;
⑤修改指定值為相同信息;
⑥根據(jù)鍵移除信息;
⑦根據(jù)值移除信息;
1.2實(shí)現(xiàn)的功能效果圖

二、實(shí)現(xiàn)核心
/***
* Title:"容器" 項(xiàng)目
* 主題:Dictionary的幫助類
* Description:
* 功能:
* ①添加信息到字典中
* ②根據(jù)鍵獲取值
* ③根據(jù)值獲取鍵
* ④修改指定鍵的值
* ⑤修改指定值為相同信息
* ⑥根據(jù)鍵移除信息
* ⑦根據(jù)值移除信息
* Version:0.1版本
* Author:Coffee
* Modify Recoder:
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Utils
{
public class DictionaryHelper
{
/// <summary>
/// 添加信息到字典中
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="key">需添加的鍵</param>
/// <param name="value">需添加的值</param>
public static void AddInfoToDic<TKey, TValue>(Dictionary<TKey, TValue> dic, TKey key, TValue value)
{
if (dic == null)
{
dic = new Dictionary<TKey, TValue>();
}
if (dic.ContainsKey(key))
{
dic[key] = value;
}
else
{
dic.Add(key, value);
}
}
/// <summary>
/// 根據(jù)鍵獲取值
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="key">鍵</param>
/// <returns>返回鍵對應(yīng)的值</returns>
public static TValue GetValueOfKey<TKey, TValue>(Dictionary<TKey, TValue> dic, TKey key)
{
TValue tmpValue = default(TValue);
if (dic != null && dic.Count > 0)
{
if (dic.ContainsKey(key))
{
tmpValue = dic[key];
}
}
return tmpValue;
}
/// <summary>
/// 根據(jù)值獲取鍵
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="value">值</param>
/// <returns>返回值對應(yīng)的所有鍵</returns>
public static List<TKey> GetKeyOfValue<TKey, TValue>(Dictionary<TKey, TValue> dic, TValue value)
{
List<TKey> keyList = new List<TKey>();
foreach (KeyValuePair<TKey, TValue> kv in dic)
{
if (kv.Value.Equals(value))
{
TKey tmpKey = kv.Key;
keyList.Add(tmpKey);
}
}
return keyList;
}
/// <summary>
/// 修改指定鍵的值
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="needModifyKey">需要修改的鍵</param>
/// <param name="replaceValue">需要替換的值</param>
/// <returns>返回修改結(jié)果(true:表示成功)</returns>
public static bool ModifyInfoOfKey<TKey, TValue>(Dictionary<TKey, TValue> dic, TKey needModifyKey, TValue replaceValue)
{
if (dic == null || dic.Count < 1) return false;
if (dic.ContainsKey(needModifyKey))
{
dic[needModifyKey] = replaceValue;
return true;
}
else
{
return false;
}
}
/// <summary>
/// 修改指定值為相同信息
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="needModifyValue">需要修改的值</param>
/// <param name="replaceValue">需要替換的值</param>
public static void ModifyInfoOfValue<TKey, TValue>(Dictionary<TKey, TValue> dic, TValue needModifyValue, TValue replaceValue)
{
if (dic == null || dic.Count < 1) return;
for (int i = 0; i < dic.Count;)
{
TValue tmpValue = dic.ElementAt(i).Value;
if (tmpValue.Equals(needModifyValue))
{
TKey tmpKey = dic.ElementAt(i).Key;
dic[tmpKey] = replaceValue;
i = 0;
}
else
{
i++;
}
}
}
/// <summary>
/// 根據(jù)鍵移除信息
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="needDeleteKey">需要?jiǎng)h除的鍵</param>
/// <returns>返回移除結(jié)果(true:表示成功)</returns>
public static bool RemoveInfoOfKey<TKey, TValue>(Dictionary<TKey, TValue> dic,TKey needDeleteKey)
{
if (dic.ContainsKey(needDeleteKey))
{
dic.Remove(needDeleteKey);
return true;
}
else
{
return false;
}
}
/// <summary>
/// 根據(jù)值移除信息
/// </summary>
/// <typeparam name="TKey">鍵類型</typeparam>
/// <typeparam name="TValue">值類型</typeparam>
/// <param name="dic">字典</param>
/// <param name="needDeleteValue">需要?jiǎng)h除的值</param>
/// <returns>返回結(jié)果(true:表示成功)</returns>
public static bool RemoveInfoOfValue<TKey, TValue>(Dictionary<TKey, TValue> dic, TValue needDeleteValue)
{
if (dic == null || dic.Count < 1) return false;
int initCount = dic.Count;
for (int i = 0; i < dic.Count;)
{
TValue tmpValue = dic.ElementAt(i).Value;
if (tmpValue.Equals(needDeleteValue))
{
TKey tmpKey = dic.ElementAt(i).Key;
dic.Remove(tmpKey);
i = 0;
}
else
{
i++;
}
}
if (initCount > dic.Count)
{
return true;
}
else
{
return false;
}
}
}//Class_end
}三、使用方法
3.1引用命名空間
using Utils;
3.2使用示例
using System;
using System.Collections.Generic;
using Utils;
namespace Test_Dictionary
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
//獲取到字典信息
Dictionary<string, string> dic = GetDictionary();
Console.WriteLine($"1-開始獲取到的字典的所有信息如下:");
ShowInfoOfDic(dic);
//根據(jù)鍵獲取到對應(yīng)的值
string queryKey = "L1";
Console.WriteLine($"當(dāng)前查詢的鍵是:{queryKey}");
string tmpValue = DictionaryHelper.GetValueOfKey(dic,queryKey);
Console.WriteLine($"2-獲取到——鍵:L1對應(yīng)的值是:{tmpValue}");
//根據(jù)值獲取到對應(yīng)的所有鍵
string queryValue = "23.4";
Console.WriteLine($"當(dāng)前查詢的值是:{queryValue}");
List<string> tmpKey = DictionaryHelper.GetKeyOfValue(dic, queryValue);
ShowInfoOfList(tmpKey);
//修改指定鍵的值
string needModifyKey = "L4";
string replaceValue1 = "66";
Console.WriteLine($"當(dāng)前需要修改的鍵是:{needModifyKey}_替換為的值是:{replaceValue1}");
DictionaryHelper.ModifyInfoOfKey(dic, needModifyKey, replaceValue1);
Console.WriteLine($"修改的鍵是:{needModifyKey}_替換為的值是:{replaceValue1}后所有內(nèi)容如下:");
ShowInfoOfDic(dic);
//修改指定值為相同信息
string needModifyValue = "23.6";
string replaceValue = "33.9";
Console.WriteLine($"當(dāng)前需要修改的值是:{needModifyValue}_替換為的值是:{replaceValue}");
DictionaryHelper.ModifyInfoOfValue(dic,needModifyValue,replaceValue);
Console.WriteLine($"修改的值是:{needModifyValue}_替換為的值是:{replaceValue}后所有內(nèi)容如下:");
ShowInfoOfDic(dic);
//根據(jù)鍵移除信息
string curRemoveKey = "L3";
Console.WriteLine($"當(dāng)前移除的鍵是:{curRemoveKey}");
DictionaryHelper.RemoveInfoOfKey(dic,curRemoveKey);
Console.WriteLine($"移除的鍵是:{curRemoveKey}后所有內(nèi)容如下:");
ShowInfoOfDic(dic);
//根據(jù)值移除信息
string curRemoveValue = "23.4";
Console.WriteLine($"當(dāng)前移除的值是:{curRemoveValue}");
DictionaryHelper.RemoveInfoOfValue(dic, curRemoveValue);
Console.WriteLine($"移除的值是:{curRemoveValue}后所有內(nèi)容如下:");
ShowInfoOfDic(dic);
Console.ReadLine();
}
//獲取一個(gè)字典
public static Dictionary<string, string> GetDictionary()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
DictionaryHelper.AddInfoToDic(dic, "L1","23.4");
DictionaryHelper.AddInfoToDic(dic, "L2", "23.6");
DictionaryHelper.AddInfoToDic(dic, "L3", "23.8");
DictionaryHelper.AddInfoToDic(dic, "L4", "23.4");
DictionaryHelper.AddInfoToDic(dic, "L5", "23.6");
DictionaryHelper.AddInfoToDic(dic, "L6", "23.4");
return dic;
}
//顯示字典中的所有信息
private static void ShowInfoOfDic(Dictionary<string,string> dic)
{
if (dic == null || dic.Count < 1) return;
foreach (var item in dic)
{
Console.WriteLine($"鍵:{item.Key} 值:{item.Value}");
}
Console.WriteLine($"--------------顯示信息完成______當(dāng)前字典:{dic.GetType().Name} 共有數(shù)據(jù):{dic.Count} 條\r\n");
}
//顯示列表信息
private static void ShowInfoOfList(List<string> list)
{
if (list == null || list.Count < 1) return;
foreach (var item in list)
{
Console.WriteLine($"對應(yīng)內(nèi)容:{item}");
}
Console.WriteLine($"--------------顯示信息完成______當(dāng)前列表:{list.GetType().Name} 共有數(shù)據(jù):{list.Count} 條\r\n");
}
}//Class_end
}
到此這篇關(guān)于詳解C#對Dictionary內(nèi)容的通用操作的文章就介紹到這了,更多相關(guān)C# Dictionary內(nèi)容操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#后臺(tái)調(diào)用前臺(tái)JS函數(shù)方法
今天小編就為大家分享一篇關(guān)于C#后臺(tái)調(diào)用前臺(tái)JS函數(shù)方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01
C# HTTP認(rèn)證方式詳解與代碼實(shí)現(xiàn)
在C#中,HTTP認(rèn)證是客戶端與服務(wù)器之間進(jìn)行身份驗(yàn)證的一種機(jī)制,常見的HTTP認(rèn)證方式包括:Basic認(rèn)證、Digest認(rèn)證、OAuth、Bearer Token等,下面我們將從工作原理、優(yōu)缺點(diǎn)對比、代碼實(shí)現(xiàn)、案例實(shí)戰(zhàn)四個(gè)方面詳細(xì)介紹這些認(rèn)證方式,需要的朋友可以參考下2025-03-03
C#設(shè)計(jì)模式之Facade外觀模式解決天河城購物問題示例
這篇文章主要介紹了C#設(shè)計(jì)模式之Facade外觀模式解決天河城購物問題,簡單描述了外觀模式的定義并結(jié)合具體實(shí)例分析了外觀模式解決購物問題的相關(guān)步驟與操作技巧,需要的朋友可以參考下2017-09-09
C#中使用反射獲取結(jié)構(gòu)體實(shí)例及思路
一般用反射獲取類對象的實(shí)例比較簡單,只要類有一個(gè)無參構(gòu)造函數(shù)或沒有顯示聲明帶參的構(gòu)造函數(shù)即可使用2013-10-10
C#結(jié)合OpenCVSharp4使用直方圖算法實(shí)現(xiàn)圖片相似度比較
這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合OpenCVSharp4使用直方圖算法實(shí)現(xiàn)圖片相似度比較,文中的示例代碼簡潔易懂,需要的小伙伴可以參考下2023-09-09

