VB.net: Datum als optionales Argument übergeben
Problem: Ich habe in VB.net eine Funktion oder eine Prozedur und möchte ein Datum als optionales Argument übergeben. Nichts einfacher als das (dachte ich… )
Lösung:
Private Sub foo(Optional Datum as Date = CDate("01.01.1901") )
Problem: Nein, doch keine Lösung, denn die IDE meckert über das Datum:
Fehler BC30060: Eine Konvertierung von "String" in "Date" kann in einem konstanten Ausdruck nicht durchgeführt werden.
Lösung: Ok, es gibt doch die Funktion <MinValue> für Datumswerte, das müsste doch gehen
Private Sub foo(Optional Datum as Date = Date.MinValue)
Problem: Grrrrr, geht auch nicht:
Fehler BC30059: Konstanter Ausdruck erforderlich.
Lösung: Wie wäre es denn mit <Nothing>?
Private Sub foo(Optional Datum as Date = Nothing)
Jupp, das funktioniert! Jetzt noch schnell der Vergleich mit <Is Nothing> und es läuft.
If Datum Is Nothing Then...
Problem: Doch halt – was ist das?
Fehler BC30020 'Der Is-Operator akzeptiert keine Operanden vom Typ "Date". Die Operanden müssen Referenztypen sein oder Typen, die NULL-Werte zulassen.
Lösung: In diesem Fall kann man tatsächlich mit ” = ” abfragen.
If Datum = Nothing Then...
Intern setz VB.net das Datum auf den 01.01.0001 aber Nothing ist so clever und akzeptiert den Wert. Problem tatsächlich gelöst.
Leave a Reply