DictionaryBase的使用

1.DictionaryBase的使用
使用内部的hash表来实现类似c++中map的功能

using System;
using System.Collections;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
public class IPAddresses : DictionaryBase
{
    public IPAddresses()
    {
    }
    public void Add(string name, string ip)
    {
        InnerHashtable.Add(name, ip);  //添加到哈希表
    }
    public string Item(string name)
    {
        return InnerHashtable[name].ToString();
    }
    public void Remove(string name)
    {
        InnerHashtable.Remove(name);
    }
}
public class Test
{
    public static void Main()
    {
        IPAddresses myIPs=new IPAddresses(); //构建哈希表
        myIPs.Add("MIKE1","192.155.12.1");
        myIPs.Add("MIKE2", "191.155.12.1");
        myIPs.Add("MIKE3", "193.155.12.1");
        myIPs.Add("MIKE4", "195.155.12.1");
        Console.WriteLine(myIPs.Item("MIKE1"));
    }
}

2.从文件中读取数据存储在map中
using System;
using System.Collections;
using System.IO;
using System.Net;
public class mymap : DictionaryBase
{
    public mymap()
    {
    }
    public mymap(string txtFile)
    {
        string[] data;
        string str;
        StreamReader reader = File.OpenText(txtFile);
        while (reader.Peek() != -1)
        {
            str = reader.ReadLine();
            data = str.Split(',');
            base.InnerHashtable.Add(data[0],data[1]);
        }
    }
    public void Add(string name, string ip)
    {
        base.InnerHashtable.Add(name,ip);
    }
    public string Item(string name)
    {
        return base.InnerHashtable[name].ToString();
    }
    public void Remove(string name)
    {
        base.InnerHashtable.Remove(name);
    }
}
public class Test
{
    public static void Main()
    {
        mymap map = new mymap(@"D:\我的文档\visual studio 2010\Projects\StringTest\StringTest\text.txt");
        DictionaryEntry[] ips=new DictionaryEntry[map.Count];
        map.CopyTo(ips, 0);
        for (int i = 0; i <= ips.GetUpperBound(0); i++)
        {
            Console.WriteLine(ips[i].Key);
            Console.WriteLine(ips[i].Value);
        }


    }
}
3.键值对的使用KeyValuePair
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class Test
{
    public static void Main()
    {
        KeyValuePair<string,int>[]gradeBook=new KeyValuePair<string, int>[10];
        //构建键值对数组
        gradeBook[0]=new KeyValuePair<string, int>("McMillan",99);  //填充键值对
        gradeBook[1] = new KeyValuePair<string, int>("Ruff", 64);
        for(int i=0;i<=gradeBook.GetUpperBound(0);i++)
            if(gradeBook[i].Value!=0)
                Console.WriteLine(gradeBook[i].Key+"  "+gradeBook[i].Value);
    }
}
4.SortedList类
这也是一个容器类,可以类似访问普通数据下标的方式访问数组内容(只不过数组下标是自定义数据类型)

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
public class Test
{
    public static void Main()
    {
       SortedList myips=new SortedList();  //初始化   
        myips.Add("Mike","192.168.1.1");
        myips.Add("David","192.155.12.1");
        myips.Add("jiajia","123.11.1.1");
        Console.WriteLine(myips["jiajia"]);  //输出对应的数值(注意访问方式)
        foreach (Object var in myips.Keys)  //遍历访问
        {
            Console.WriteLine(var+" "+myips[var]);
        }
    }
}
//通过下表访问数组
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
public class Test
{
    public static void Main()
    {
       SortedList list=new SortedList();
        list.Add("nihao",13);
        list.Add("jiajia",25);
        list.Add("bushi",20);
        for(int i=0;i<list.Count;i++)
        {
            Console.WriteLine(list.GetByIndex(i));  //通过下表访问
        }
    }

}


总结:
DictionaryBase类是用来创建用户字典的抽象类。键值对作为DictionaryEntry对象来进行存储.

SortedList类是Dictionary类的一种特殊类型,他会按照键的顺序来存储键值对。

可以通过所以的方式来访问存储在SortedList中的值.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"C# 7.0 核心技术指南"是一本介绍C#语言和相关技术的书籍。这本书前三章主要集中介绍C#语言的基本语法、类型和变量,适合C#语言的初学者循序渐进地学习。同时,这本书还介绍了一些高级特性,如不安全代码和预处理指令。此外,书中还提到了.NET Core和ASP.NET Core,这是开源框架用于开发易于部署的互联网应用程序和微服务。另外,书中还涉及了KeyedCollection<TKey, TValue>和DictionaryBase等相关概念和技术。这本书可以帮助读者深入理解C#语言的核心技术和相关框架的使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [新书推荐 |《C# 7.0核心技术指南(原书第7版)》](https://blog.csdn.net/hzbooks/article/details/108215752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C#7.0核心技术指南学习笔记(一)C#和.NET Framework简介](https://blog.csdn.net/weixin_46858064/article/details/130142100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值