3组吧,contains比较内部应该是比较引用吧,当然简单类型除外
解决方案 »
- 将gridview中的数据导入到excle中的方法
- mvc3 如何切换页面中的部分视图,菜鸟问题,轻松拿分,速度啊
- 100分求web网页中播放视频并且截图,请教高手有什么方法。
- 问个关于repeater问题
- 关于香港时间和法国时间的问题
- 关于datagrid中的模板列中的子控件dropdownlist的viewstate问题,
- asp.net中,http://ad.3kuai.net/?1200 这种传值怎么实现
- DataGrid删除,对话框问题
- VS.NET目前最新版本是多少?
- SQLConnection的简单问题
- .net 获取手机IMEI码 问题
- 关于ViewBag的一些设想,高手请进。
你看一下contains的源码,如果是按==比较的话,不妨重载==运算符
你看一下contains的源码,如果是按==比较的话,不妨重载==运算符
已经解决了值类型的比较,是直接比较结果。这种自定义对象类型,比较就比较另类了:像Contain是直接比较是不是引用同一个对象,所以每次new的时候引用对象不是同一个,所以死都会重复。所以得重写GetHashCode和重写对应的 Eque方法来进行对象是否相等进行比较繁琐public class TKey
{
public int Id { get; set; } public string Name { get; set; } public override int GetHashCode()
{
return this.Id.GetHashCode();
} public override bool Equals(object obj)
{
if (obj == null)
return false; if (obj.GetType() != typeof(TKey))
return false; TKey key = obj as TKey;
return key.Id == Id && key.Name == key.Name;
}
public string Key
{
get
{
return "";
}
}
} public class TValueItem
{
public string ValueItem { get; set; }
} class Program
{
static void Main(string[] args)
{
var dics = new Dictionary<TKey, List<TValueItem>>(); var dicList=new List<KeyValuePair<TKey,List<TValueItem>>>();
var key = new TKey()
{
Id=3,
Name="ABC"
};
if(!dics.ContainsKey(key))
dics.Add(key, new List<TValueItem>()); dics[key].Add(new TValueItem()
{
ValueItem="Item-ABC"
}); key = new TKey()
{
Id = 4,
Name = "EFG"
};
if (!dics.ContainsKey(key))
dics.Add(key, new List<TValueItem>()); dics[key].Add(new TValueItem()
{
ValueItem = "Item-EFG"
});
key = new TKey()
{
Id = 3,
Name = "ABCE"
};
if (!dics.ContainsKey(key))
dics.Add(key, new List<TValueItem>()); dics[key].Add(new TValueItem()
{
ValueItem = "Item-ABC222"
}); key = new TKey()
{
Id = 5,
Name = "ABC"
};
if (!dics.ContainsKey(key))
dics.Add(key, new List<TValueItem>()); dics[key].Add(new TValueItem()
{
ValueItem = "Item-ABC222"
}); foreach (var pair in dics)
{
Console.WriteLine("Key:" + pair.Key.Id);
}
Console.Read(); }
}