Is List.Contains(Object) checks by address or by value? - C#