Gibt es ein einfaches Attribut oder einen Datenvertrag, den ich einem Funktionsparameter zuweisen kann, der verhindert, dass null
in C# /. NET übergeben wird? Idealerweise würde dies auch zur Kompilierzeit prüfen, um sicherzustellen, dass das Literal null
nirgendwo dafür verwendet wird und zur Laufzeit ArgumentNullException
geworfen wird.Markiere Parameter als NULL in C# /. NET NULL?
Zur Zeit schreibe ich so etwas wie ...
if (null == arg)
throw new ArgumentNullException("arg");
... für jedes Argument, das ich null
nicht erwarten sein.
Auf die gleiche Note, gibt es ein gegenüber Nullable<>
wobei folgende scheitern würde:
NonNullable<string> s = null; // throw some kind of exception
> Zur Kompilierzeit ist leider nichts verfügbar. > ... > Es wäre immer noch ziemlich nett, die aktuelle Sprachsyntax und Unterstützung rund um die NULL-Zulässigkeit zu haben Ich stimme zu. Ich möchte auch, dass Kompilierungsfehler auftreten. – AndrewJacksonZA
@Jon, funktioniert nicht "if (arg = null)" funktioniert, wenn es eine implizite Umwandlung zu bool defined gibt? Ich gebe zu, es scheint pervers, aber es kompiliert ... –
@ ThomasS.Trias: Ja, in diesem unglaublich obskuren Rand Fall, * kombiniert * mit einem Tippfehler, kombiniert mit einem Mangel an Tests um diesen Code, Sie ' d am Ende mit einem Problem. Zu diesem Zeitpunkt denke ich, dass Sie größere Probleme haben :) –