"Methodenparameter darf nicht Null sein" Möglich

  • C#

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Müssten nicht Code Contracts sowas können? Ansonsten würde ich halt eine Exception werfen.

    Das NotNull-Attribut wurde jdf. entfernt.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Fakiz schrieb:

    Ist es möglich, einen Methodenparameter bzw. eine Methodensignatur, so zu definieren, dass zur lazfzeit kein nicht instanziertes Objekt übergeben werden kann?
    Nein, ist nicht möglich.
    Gängige Praxis ist, dass man halt zur Laufzeit eine Exception wirft - dafür ist ArgumentNullException ja da.

    Msdn schrieb:

    Die folgende Vorbedingung drückt z. B. aus, dass der Parameter x nicht NULL sein darf.

    Contract.Requires( x != null );

    Wenn im Code bei Verletzung einer Vorbedingung eine bestimmte Ausnahme ausgelöst werden soll, können Sie die generische Überladung von Requires folgendermaßen verwenden.

    Contract.Requires<ArgumentNullException>( x != null, "x" )
    na, das ist ja umwerfend!
    Und ich hätte doch tatsächich folgenden SteinzeitCode geschrieben:

    C#-Quellcode

    1. if(x == null)throw new ArgumentNullException("x mustn't be null");
    (eiglich auch nicht länger, oder? :evil:
    nur man spart sich eine Dll einzubinden)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich hab mir Code Contracts mal ansatzweise angeschaut. Grundsätzlich gibt es auch eine IDE-Unterstützung zur Entwurfszeit (bisher nur bei C# gestestet), sodass schon angezeigt wird, dass ein Parameter gegen den CodeContract verstößt. Soll wohl auch möglich sein, einen Build zu verhindern, wenn man gegen einen Contract verstößt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.