Devo inoltrare la chiamata a .Equaliti su .Equalisti?

3

Quindi, ti ho creato un oggetto c # standard, sovrascrivendo Equals e implementando IEquatable

    public override int GetHashCode()
    {
        return _name.GetHashCode();
    }

    public override bool Equals(object obj)
    {
        return Equals(obj as Tag)
    }

    #region IEquatable<Tag> Members

    public bool Equals(Tag other)
    {
        if (other == null)
            return false;
        else
            return _name == other._name;
    }

    #endregion

Ora, per qualche motivo, pensavo che inoltrare le chiamate da Equals a Equals fosse sbagliato, non ho idea del perché, forse l'ho letto molto tempo fa, comunque scriverei codice separato (ma logicamente uguale) per ogni metodo

Ora penso che l'inoltro di Equals to Equals sia ok, per ovvi motivi, ma per la vita me non riesco a ricordare perché pensavo che non fosse prima.

Qualche idea?

    
posta Jaimal Chohan 31.01.2011 - 23:04
fonte

1 risposta

3

Questa è una buona pratica, ma devi stare attento se Tag era una struttura. Se è il caso, vuoi farlo.

public override bool Equals(object obj)
{
    return obj is Tag && Equals((Tag)obj);
}
    
risposta data 31.01.2011 - 23:24
fonte

Leggi altre domande sui tag