第一次泛型编程(以前从来也只有用过List<T>之类的)
不知道会有什么问题呢?继承IList的部分没有注释了,MSDN可以查的。欢迎提意见噢~
你可能会看到下面的类用多种方式实现了同样的效果,有多态,有模版,还有包装wrapper(不知道是不是恰当)……还用了泛型……
实际项目中,如果有可取之处,请只取其中一种就可以了……(计划中……)

补充一张VS自动生成的类图
【代码保留】成对值类(PairCollection和Pair)

【代码保留】成对值类(PairCollection和Pair)using System;
【代码保留】成对值类(PairCollection和Pair)
using System.Collections.Generic;
【代码保留】成对值类(PairCollection和Pair)
using System.Collections;
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)
namespace CA_PairCollection
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 基础格式化机制
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="T"></typeparam>

【代码保留】成对值类(PairCollection和Pair)    interface IFormat<T>
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        T GetFormat();
【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 格式化模板接口
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>

【代码保留】成对值类(PairCollection和Pair)    interface IFormatTemplate
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)        
/// Text模版,形如:"Text = "
【代码保留】成对值类(PairCollection和Pair)        
/// </summary>

【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        string TextTemplate 【代码保留】成对值类(PairCollection和Pair)get;set;}
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)        
/// Value模版,形如:"Value = "
【代码保留】成对值类(PairCollection和Pair)        
/// </summary>

【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        string ValueTemplate 【代码保留】成对值类(PairCollection和Pair)get;set;}
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)        
/// 分隔符模版,形如:","
【代码保留】成对值类(PairCollection和Pair)        
/// </summary>

【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        string Separator 【代码保留】成对值类(PairCollection和Pair)get;set;}
【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 提供用于格式化对象的模板的格式化机制
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>

【代码保留】成对值类(PairCollection和Pair)    interface IFormatProvider
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
string GetFormat(IFormatTemplate formatTemplate);
【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 格式化模板类
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>

【代码保留】成对值类(PairCollection和Pair)    class FormatTemplate : IFormatTemplate
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
public FormatTemplate(string textTemplate,string separator,string valueTemplate)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.textTemplate = textTemplate;
【代码保留】成对值类(PairCollection和Pair)            
this.separator = separator;
【代码保留】成对值类(PairCollection和Pair)            
this.valueTemplate = valueTemplate;
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
private string textTemplate;
【代码保留】成对值类(PairCollection和Pair)        
private string separator;
【代码保留】成对值类(PairCollection和Pair)        
private string valueTemplate;
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IFormatTemplate 成员#region IFormatTemplate 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public string TextTemplate
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.textTemplate;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
set
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
this.textTemplate = value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public string ValueTemplate
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.valueTemplate;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
set
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
this.valueTemplate = value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public string Separator
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.separator;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
set
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
this.separator = value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 成对参数类
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="U"></typeparam>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="V"></typeparam>

【代码保留】成对值类(PairCollection和Pair)    class Pair<U, V> : IFormat<string>, IFormatProvider
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
public Pair() 【代码保留】成对值类(PairCollection和Pair){ }
【代码保留】成对值类(PairCollection和Pair)        
public Pair(U text, V value)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.text = text;
【代码保留】成对值类(PairCollection和Pair)            
this.value = value;
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
private U text;
【代码保留】成对值类(PairCollection和Pair)        
public U Text
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.text;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
set
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
this.text = value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
private V value;
【代码保留】成对值类(PairCollection和Pair)        
public V Value
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
set
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
this.value = value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IFormat 成员#region IFormat<string> 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public virtual string GetFormat()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return "Text = " + this.Text.ToString() + "; Value = " + this.Value.ToString();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IFormatProvider 成员#region IFormatProvider 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public virtual string GetFormat(IFormatTemplate formatTemplate)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return formatTemplate.TextTemplate + this.Text.ToString()
【代码保留】成对值类(PairCollection和Pair)                
+ formatTemplate.Separator
【代码保留】成对值类(PairCollection和Pair)                
+ formatTemplate.ValueTemplate + this.Value.ToString();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 成对参数类集合
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="U"></typeparam>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="V"></typeparam>

【代码保留】成对值类(PairCollection和Pair)    class PairCollection<U, V> : IList<Pair<U, V>>, IFormat<string>, IFormatProvider
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
private IList<Pair<U, V>> pairs;
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public PairCollection()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            pairs 
= new List<Pair<U, V>>();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IListPairU,V 成员#region IList<Pair<U,V>> 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public int IndexOf(Pair<U, V> item)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return this.pairs.IndexOf(item);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public void Insert(int index, Pair<U, V> item)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.pairs.Insert(index,item);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public void RemoveAt(int index)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.pairs.RemoveAt(index);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public Pair<U, V> this[int index]
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.pairs[index];
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
set
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
this.pairs[index]=value;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
ICollectionPairU,V 成员#region ICollection<Pair<U,V>> 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public void Add(Pair<U, V> item)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.pairs.Add(item);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public void Clear()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.pairs.Clear();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public bool Contains(Pair<U, V> item)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return this.pairs.Contains(item);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public void CopyTo(Pair<U, V>[] array, int arrayIndex)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
this.pairs.CopyTo(array,arrayIndex);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public int Count
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get 
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.pairs.Count;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public bool IsReadOnly
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
get 
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                
return this.IsReadOnly;
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public bool Remove(Pair<U, V> item)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return this.Remove(item);
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IEnumerablePairU,V 成员#region IEnumerable<Pair<U,V>> 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public IEnumerator<Pair<U, V>> GetEnumerator()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return this.pairs.GetEnumerator();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IEnumerable 成员#region IEnumerable 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        IEnumerator IEnumerable.GetEnumerator()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return (IEnumerator)GetEnumerator();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IFormat 成员#region IFormat 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public virtual string GetFormat()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
string result = string.Empty;
【代码保留】成对值类(PairCollection和Pair)            
foreach (Pair<U, V> p in this.pairs)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                result 
= result + p.GetFormat() + "\r\n";
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
return result;
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IFormatProvider 成员#region IFormatProvider 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
public string GetFormat(IFormatTemplate formatTemplate)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
string result = string.Empty;
【代码保留】成对值类(PairCollection和Pair)            
foreach (Pair<U, V> p in this.pairs)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                result 
= result + p.GetFormat(formatTemplate) + "\r\n";
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)            
return result;
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 实现了中文式成对参数的类
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="U"></typeparam>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="V"></typeparam>

【代码保留】成对值类(PairCollection和Pair)    sealed class ChinesePair<U, V> : Pair<U, V>
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
public ChinesePair()
【代码保留】成对值类(PairCollection和Pair)            : 
base()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){ }
【代码保留】成对值类(PairCollection和Pair)        
public ChinesePair(U text,V value)
【代码保留】成对值类(PairCollection和Pair)            : 
base(text, value)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){ }
【代码保留】成对值类(PairCollection和Pair)        
public override string GetFormat()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return "文本 = " + this.Text.ToString() + "; 值 = " + this.Value.ToString();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 实现了英文式成对参数的类
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="U"></typeparam>
【代码保留】成对值类(PairCollection和Pair)    
/// <typeparam name="V"></typeparam>

【代码保留】成对值类(PairCollection和Pair)    sealed class EnglishPair<U, V> : Pair<U, V>
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
public EnglishPair()
【代码保留】成对值类(PairCollection和Pair)            : 
base()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){ }
【代码保留】成对值类(PairCollection和Pair)        
public EnglishPair(U text, V value)
【代码保留】成对值类(PairCollection和Pair)            : 
base(text, value)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){ }
【代码保留】成对值类(PairCollection和Pair)        
public override string GetFormat()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return "Text = " + this.Text.ToString() + "; Value = " + this.Value.ToString();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
/**//// <summary>
【代码保留】成对值类(PairCollection和Pair)    
/// 键值均为string类型的一个类型包装
【代码保留】成对值类(PairCollection和Pair)    
/// </summary>

【代码保留】成对值类(PairCollection和Pair)    class KVPairCollection : PairCollection<stringstring>,IFormat<string>
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
private PairCollection<stringstring> p;
【代码保留】成对值类(PairCollection和Pair)        
public KVPairCollection()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            p 
= new PairCollection<stringstring>();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
IFormat 成员#region IFormat<string> 成员
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
string IFormat<string>.GetFormat()
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
return p.GetFormat();
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)        
#endregion

【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)    
class Program
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)    
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)        
static void Main(string[] args)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)        
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)            
//
【代码保留】成对值类(PairCollection和Pair)            
//以下示例用多种方式实现了成对类的格式化输出
【代码保留】成对值类(PairCollection和Pair)            
//
【代码保留】成对值类(PairCollection和Pair)

【代码保留】成对值类(PairCollection和Pair)            PairCollection
<stringstring> psBases = new PairCollection<stringstring>();
【代码保留】成对值类(PairCollection和Pair)            psBases.Add(
new Pair<stringstring>("baseText1""baseValue1"));
【代码保留】成对值类(PairCollection和Pair)            psBases.Add(
new Pair<stringstring>("baseText2""baseValue2"));
【代码保留】成对值类(PairCollection和Pair)            
foreach (Pair<stringstring> p in psBases)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                Console.WriteLine(p.GetFormat());
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(
"----------------------");
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            PairCollection
<stringstring> psPloyStrings = new PairCollection<stringstring>();
【代码保留】成对值类(PairCollection和Pair)            psPloyStrings.Add(
new ChinesePair<stringstring>("textChinese1""valueChinese1"));
【代码保留】成对值类(PairCollection和Pair)            psPloyStrings.Add(
new EnglishPair<stringstring>("textEnglish1""valueEnglish1"));
【代码保留】成对值类(PairCollection和Pair)            
foreach (Pair<stringstring> p in psPloyStrings)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                Console.WriteLine(p.GetFormat());
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(
"----------------------");
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            PairCollection
<stringint> psPloyInts = new PairCollection<stringint>();
【代码保留】成对值类(PairCollection和Pair)            psPloyInts.Add(
new ChinesePair<stringint>("textChinese1"1));
【代码保留】成对值类(PairCollection和Pair)            psPloyInts.Add(
new EnglishPair<stringint>("textEnglish1"2));
【代码保留】成对值类(PairCollection和Pair)            
foreach (Pair<stringint> p in psPloyInts)
【代码保留】成对值类(PairCollection和Pair)【代码保留】成对值类(PairCollection和Pair)            
【代码保留】成对值类(PairCollection和Pair){
【代码保留】成对值类(PairCollection和Pair)                Console.WriteLine(p.GetFormat());
【代码保留】成对值类(PairCollection和Pair)            }

【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(
"----------------------");
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(psPloyStrings.GetFormat());
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(psPloyInts.GetFormat());
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(
"----------------------");
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            KVPairCollection kvs 
= new KVPairCollection();
【代码保留】成对值类(PairCollection和Pair)            kvs.Add(
new ChinesePair<stringstring>("textChinese1""valueChinese1"));
【代码保留】成对值类(PairCollection和Pair)            kvs.Add(
new EnglishPair<stringstring>("textEnglish1""valueEnglish1"));
【代码保留】成对值类(PairCollection和Pair)            kvs.Add(
new Pair<stringstring>("textBase1""valueBase"));
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(kvs.GetFormat());
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(
"----------------------");
【代码保留】成对值类(PairCollection和Pair)
【代码保留】成对值类(PairCollection和Pair)            PairCollection
<stringstring> pFormatProvider = new PairCollection<stringstring>();
【代码保留】成对值类(PairCollection和Pair)            pFormatProvider.Add(
new ChinesePair<stringstring>("textChinese1""valueChinese1"));
【代码保留】成对值类(PairCollection和Pair)            pFormatProvider.Add(
new EnglishPair<stringstring>("textEnglish1""valueEnglish1"));
【代码保留】成对值类(PairCollection和Pair)            Console.WriteLine(pFormatProvider.GetFormat((IFormatTemplate)(
new FormatTemplate("模版Text = "," ; ""模版Value = "))));
【代码保留】成对值类(PairCollection和Pair)        }

【代码保留】成对值类(PairCollection和Pair)    }

【代码保留】成对值类(PairCollection和Pair)}

【代码保留】成对值类(PairCollection和Pair)

转载于:https://www.cnblogs.com/volnet/archive/2007/08/21/863402.html

相关文章:

  • 2021-07-07
  • 2022-12-23
  • 2021-10-22
  • 2022-12-23
  • 2021-06-03
  • 2021-09-17
  • 2021-03-31
  • 2022-01-10
猜你喜欢
  • 2021-08-13
  • 2022-02-26
  • 2021-05-24
  • 2021-05-25
  • 2021-06-07
  • 2021-05-29
相关资源
相似解决方案