C#如何查找ArrayList 中的某个数据?(附解决方案及源码)
来源:互联网 发布:矩阵的三种范数怎么求 编辑:程序博客网 时间:2024/05/21 15:00
请问,如何查找ArrayList 中的某个数据???
我下面的代码为何总是返回false?
难道一定要用循环吗?
private void button1_Click(object sender, EventArgs e)
{
ArrayList SenderAddressAL= new ArrayList();
SenderAddressAL.Add(new SenderAddress("[Use system default]", ""));
SenderAddressAL.Add(new SenderAddress("abc@ebay.com", "abc@ebay.com"));
if (SenderAddressAL.Contains(new SenderAddress("abc@ebay.com", "abc@ebay.com")))
MessageBox.Show("Have");
else
MessageBox.Show("NOT Have");
}
public class SenderAddress
{
//-----Description-----
protected string description;
public string Description
{
get { return description; }
set { description = value; }
}
//-----eMailAddress-----
protected string emailaddress;
public string eMailAddress
{
get { return emailaddress.ToLower(); }
set { emailaddress = value; }
}
public SenderAddress(string descr, string emailaddr)
{
description = descr;
emailaddress = emailaddr;
}
}
Solution:
SenderAddress override Equals
参考这个代码,把类改一下就可以了:
//可以比较的类
class A
{
private int m_i;
public A(int i)
{
this.m_i = i;
}
public override bool Equals(object obj)
{
A _a = obj as A;
if (_a != null && _a.m_i == this.m_i)
{
return true;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
//测试
private void button1_Click(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
al.Add(new A(1));
al.Add(new A(2));
al.Add(new A(3));
if (al.Contains(new A(2)))
{
MessageBox.Show("have");
}
else
{
MessageBox.Show("no");
}
}
public override bool Equals(object obj)
{
A _a = obj as A;
if (_a != null && _a.m_i == this.m_i)
{
return true;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
这种方法是最标准的方法。
这两段代码是关键,其中GetHashcode不写也行,但会有编译警告。
override SenderAddress的Equals方法,否则它做的是对象地址的比较,即比较是否为同一对象,所以你的代码总是返回false
- C#如何查找ArrayList 中的某个数据?(附解决方案及源码)
- C# Retry重试操作解决方案(附源码)
- C# Retry重试操作解决方案(附源码)
- POI导出大量数据的简单解决方案(附源码)
- POI导出大量数据的简单解决方案(附源码)
- C# ArrayList源码剖析
- 如何查找并设置某个数据字段的search help
- C#导出List数据到xml文件[附源码]
- C#导出List数据到xml文件[附源码]
- C#编写数据分析软件(附源码)
- 二维码生成算法及c#实现(附源码)
- 二维码生成算法及c#实现(附源码)
- 使用JQuery加载XML文件中的数据【附源码下载】
- 如何查找某个特定证书
- c# 中的 ArrayList
- 关于C#中的ArrayList
- C#中的ArrayList
- C#中的ArrayList类
- Log4j日志管理系统简单使用说明
- PHP获得字符串的宽度(像素px)
- Log4j源代码阅读—Logger创建
- 向窗口句柄发送字符串
- ASP.NET 2.0中使用webpart系列控件
- C#如何查找ArrayList 中的某个数据?(附解决方案及源码)
- 如何实现一个循环缓冲区模型
- 路由与交换机的备份
- 在ASP.NET中实现Url Rewriting
- ASP.NET构架与安全机制之Http请求处理
- 数码管显示
- Oracle中SQLPLUS 常用指令收集与技巧
- oracle中的外连接简单介绍
- 回报BF28 发出高赔付研究报告