In your simple case it would not make any difference. The difference would come in if you had more properties to deal with. Take a case like this:-
class A
{
public int Value { get; private set; }
public string myString { get; private set; }
public A(int value, string mystring)
{
Value = value;
myString = mystring;
}
}
class A:IEquatable<A>
{
public int Value { get; private set; }
public string myString { get; private set; }
public A(int value, string mystring)
{
Value = value;
myString = mystring;
}
public bool Equals(A other)
{
return other.Value == Value;
}
}
then if you ran this method :-
private void button1_Click(object sender, EventArgs e)
{
A[] arr = new A[10];
List<A> lst = new List<A>();
for (int i = 0; i < arr.Length; i++)
{
arr[i] = new A(i, i.ToString());
lst.Add(new A(i, "A " + i.ToString()));
}
foreach (A item in arr)
{
if (lst.Contains(item))
textBox1.Text += "Contains " + item.Value + "\n";
}
}
on the first iteration of A, you would get no results, but if you ran it over the second iteration of A, you would get all the values of A.
Hope this helps