Quando si eredita da una classe base, dovresti ripetere il test degli argomenti del costruttore?

2

Dire che ho qualcosa del genere:

public class BaseClass
{
    public BaseClass(string someString)
    {
        if(someString == null)
            throw new ArgumentException();
    }
}

public class ChildClass : BaseClass
{
    public ChildClass(string someString)
        : base(someString)
    {
        // Should I do this??
        if(someString == null)
            throw new ArgumentException();
    }
}

Inoltre, cosa succede se sto ereditando una classe per la quale non ho la fonte. Devo ricontrollare gli argomenti del costruttore?

    
posta ConditionRacer 18.06.2013 - 22:57
fonte

1 risposta

7

No. Se la tua classe base convalida qualcosa che non devi. Per quanto riguarda la tua seconda domanda: Sì e No. Sì, se stai per usare l'argomento, no se solo la classe base usa l'argomento.

È compito della classe base essere sicuro che quel valore sia sufficiente per il suo scopo , non puoi comunque aspettarti che la classe base assicuri che il valore sia abbastanza buono per tuo scopo. Per quel che ne sai, la classe base è completamente felice con un valore nullo e può funzionare bene in quello scenario quando non è possibile.

Inoltre, quando esegui il controllo Null delle stringhe, di solito vuoi string.IsNullOrWhitespace(someString) o string.IsNullOrEmpty(someString) a seconda che "" sia valido o "" sia valido, o non sia.

    
risposta data 18.06.2013 - 23:01
fonte

Leggi altre domande sui tag