如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 !
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Data;
5
using System.Drawing;
6
using System.Text;
7
using System.Windows.Forms;
8
using System.Collections;
9
using System.IO;
10
using System.Xml.Serialization;
11![](/Images/OutliningIndicators/None.gif)
12
namespace arrylistcheck
13
{
14
public partial class Form1 : Form
15
{
16
public Form1()
17
{
18
InitializeComponent();
19
}
20![](/Images/OutliningIndicators/InBlock.gif)
21![](/Images/OutliningIndicators/InBlock.gif)
22
private void button1_Click(object sender, EventArgs e)
23
{
24
ArrayList array1 = new ArrayList();
25
ArrayList array2 = new ArrayList();
26
ArrayList array3 = new ArrayList();
27![](/Images/OutliningIndicators/InBlock.gif)
28
MyEntity entity1 = new MyEntity();
29
entity1.Address = "peking";
30
entity1.Job = "programmer";
31
BaseInfo b1 = new BaseInfo();
32
b1.Age = 10;
33
b1.Name = "zzq";
34
entity1.PersonalInfo = b1;
35![](/Images/OutliningIndicators/InBlock.gif)
36
array1.Add(entity1);
37
array2.Add(entity1);
38
array3.Add(entity1);
39
MyEntity entity2 = new MyEntity();
40
entity2.Address = "Hebei";
41
entity2.Job = "programmer";
42
BaseInfo b2 = new BaseInfo();
43
b2.Age = 20;
44
b2.Name = "hongfang";
45
entity2.PersonalInfo = b2;
46![](/Images/OutliningIndicators/InBlock.gif)
47
array1.Add(entity2);
48
array2.Add(entity2);
49
array3.Add(entity2);
50![](/Images/OutliningIndicators/InBlock.gif)
51
MyEntity entity3 = new MyEntity();
52
entity3.Address = "unkown";
53
entity3.Job = "programmer";
54
BaseInfo b3 = new BaseInfo();
55
b3.Age = 40;
56
b3.Name = "zzq";
57
entity3.PersonalInfo = b3;
58![](/Images/OutliningIndicators/InBlock.gif)
59
array3.Add(entity3);
60
Type[] tp ={ typeof(MyEntity), typeof(BaseInfo) };
61
try
62
{
63
if (IsTwoObjectsEqual(array1, array2, typeof(ArrayList), tp))
64
MessageBox.Show("Array1 equals to array2");
65
else
66
MessageBox.Show("Array1 does not equals to array2");
67![](/Images/OutliningIndicators/InBlock.gif)
68
if (IsTwoObjectsEqual(array1, array3, typeof(ArrayList), tp))
69
MessageBox.Show("Array1 equals to array3");
70
else
71
MessageBox.Show("Array1 does not equals to array3");
72
}
73
catch (Exception ex)
74
{
75
MessageBox.Show(ex.Message);
76
}
77![](/Images/OutliningIndicators/InBlock.gif)
78
}
79
public static bool IsTwoObjectsEqual(object oOrigin, object oCompared, Type classType, Type[] includedType)
80
{
81
string strOrigin = string.Empty;
82
string strCompared = string.Empty;
83
FileStream fsOrigin = null;
84
FileStream fsCompared = null;
85
StreamReader objOriginReader = null;
86
StreamReader objComparedReader = null;
87![](/Images/OutliningIndicators/InBlock.gif)
88
try
89
{
90
XmlSerializer xs = new XmlSerializer(classType, includedType);
91
if (File.Exists("d:\\Origin.txt")) File.Delete("d:\\Origin.txt");
92
if (File.Exists("d:\\Compared.txt")) File.Delete("d:\\Compared.txt");
93
fsOrigin = new FileStream("d:\\Origin.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
94
xs.Serialize(fsOrigin, oOrigin);
95
fsCompared = new FileStream("d:\\Compared.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
96
xs.Serialize(fsCompared, oCompared);
97![](/Images/OutliningIndicators/InBlock.gif)
98
//Read from the two files and compare .
99
fsOrigin.Close();
100
fsCompared.Close();
101
objOriginReader = new StreamReader("d:\\Origin.txt");
102
objComparedReader = new StreamReader("d:\\Compared.txt");
103
strOrigin = objOriginReader.ReadToEnd();
104
strCompared = objComparedReader.ReadToEnd();
105
objOriginReader.Close();
106
objComparedReader.Close();
107
if (strOrigin == strCompared)
108
return true;
109
else
110
return false;
111
}
112
catch (Exception ex)
113
{
114
throw ex;
115
}
116
finally
117
{
118
fsOrigin.Close();
119
fsCompared.Close();
120
objOriginReader.Close();
121
objComparedReader.Close();
122
}
123
}
124
}
125
126
public class MyEntity
127
{
128
public string Job;
129
public string Address;
130
public BaseInfo PersonalInfo;
131
public MyEntity()
132
{
133
}
134
}
135
public class BaseInfo
136
{
137
public string Name;
138
public int Age;
139![](/Images/OutliningIndicators/InBlock.gif)
140
}
141
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/InBlock.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/InBlock.gif)
86
![](/Images/OutliningIndicators/InBlock.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/InBlock.gif)
89
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/InBlock.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/InBlock.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/InBlock.gif)
108
![](/Images/OutliningIndicators/InBlock.gif)
109
![](/Images/OutliningIndicators/InBlock.gif)
110
![](/Images/OutliningIndicators/InBlock.gif)
111
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![](/Images/OutliningIndicators/InBlock.gif)
113
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
114
![](/Images/OutliningIndicators/InBlock.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
118
![](/Images/OutliningIndicators/InBlock.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/InBlock.gif)
121
![](/Images/OutliningIndicators/InBlock.gif)
122
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
123
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/InBlock.gif)
127
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
128
![](/Images/OutliningIndicators/InBlock.gif)
129
![](/Images/OutliningIndicators/InBlock.gif)
130
![](/Images/OutliningIndicators/InBlock.gif)
131
![](/Images/OutliningIndicators/InBlock.gif)
132
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
133
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
134
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
137
![](/Images/OutliningIndicators/InBlock.gif)
138
![](/Images/OutliningIndicators/InBlock.gif)
139
![](/Images/OutliningIndicators/InBlock.gif)
140
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
141
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
昨天晚上发了n多次才成功,刚发现前面写的那些东西没有了。郁闷 !
串行化到任意流都是可以的,这个例子是用文件流了。用串行化的优势在于可以不考虑一个类的结构,或许类的属性本身就是对象,这样属性本身还会有属性,其他的方法似乎不能很好的解决。
只是给提供一种思路,如果大家有好的解决方案,联系我啊!zzq765#hotmail.com .