Чтобы ответить на ваш вопрос, нет, вы не должны получить правду. List
и List<T>
не определяют .Equals, поэтому они наследуют Object.Equals, который проверяет следующее:
public static bool Equals(object objA, object objB)
{
return ((objA == objB) || (((objA != null) && (objB != null)) && objA.Equals(objB)));
}
И objA.Equals(objB)
является виртуальным. Если я правильно помню, реализация по умолчанию просто проверяет равенство ссылок (указывая на тот же объект в памяти), поэтому ваш код будет возвращать false.