C#中Equals重写的元组实现是否有任何缺点

我一直在研究如何为自定义类的Equals方法实现重写。以以下为例:

public class Person 
{
  public string Id {get; set;}
  public int Age {get; set;}
  public bool IsAlive {get; set;}
}

I've been using Logan Franks great guide on how to do this in a structured way. In one of the comments a much simpler implementation is proposed, and I'm wondering if there are any drawbacks to it.

public override bool Equals(object person)
{
    if (ReferenceEquals(person, null) return false;
    if (person.GetType() != this.GetType()) return false;
    Person p = (Person)person;

    return (Id, Age, IsAlive).Equals((p.Id, p.Age, p.IsAlive));
}

我假设代替元组Equals运算符,我们将替换return语句,如下所示

return String.Equals(Id, p.Id)
    && Int32.Equals(Age, p.Age)
    && Boolean.Equals(IsAlive. p.IsAlive);

元组的实现似乎更快(需要更少的设置),并且由于根据文档“相等性由每个组件的默认对象相等性比较器确定”,因此不需要区分“ String.Equals”和“ Boolean.Equals”在return语句中以此类推-如果第一个参数是object属性,则将使用正确的对象比较器。它似乎不太容易维护,因为添加新属性将在两个单独的元组列表的末尾进行,而不是在return语句中添加新行,但这似乎是一个优先事项。

我很好奇我是否会错过任何缺点。

评论