SortedList集合 键或值可重复 键值不可重复的实现

 问题由上篇而来
using System.Collections.Generic;
using System;
namespace pdfToExcel{    
    class MySortList<K,V>:SortedList<K,V>    
    {        
        private class MyComparer<K> : IComparer<K>        
        {            
            public int Compare(K x, K y)            
            {
                return 1;   //永远不等,允许重复      
                        
            }        
        }        
          
        public MySortList():base(new MyComparer<K>())        
         {                    
         }         
         public void Add(K key, V value)        
        {          
            //falg用于跳出函数
            int flag = 0;
             //检查是否具备这个key,并且检查value是否重复             
             foreach (KeyValuePair<K,V> item in this)            
             {                
                 if (item.Key.ToString() == key.ToString() && item.Value.ToString() == value.ToString())                
                 {
                     flag=1;           
                 }
                
                
             }
             if (flag == 1)
                 return;  //跳出函数
             //否则就加入           
             base.Add(key, value);
            
                        
         }    
    }   
    class Program    
    {        
        static void Main(string[] args)        
        {            
            MySortList<string, string> m = new MySortList<string, string>();           
            m.Add("a", "a");            
            m.Add("b", "b");
            m.Add("a", "c");
            m.Add("d", "c");
           m.Add("a", "a");    //此行没有加入

            Console.ReadKey();
        }    
    }
}


这样键可以重复,值可以重复,但是键值不可以重复

 

参考:http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/3a24ba81-3ba0-4727-ba93-1b319a947feb

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值