Wir alle wissen, dass VB Nothing
ist ähnlich, aber nicht äquivalent zu C# null
. (Wenn Sie nicht wissen, dass sind, haben einen Blick auf this answer zuerst.)Gibt es einen VB.NET-Ausdruck, der * immer * null ergibt?
Nur aus Neugier, ich möchte folgendes wissen:
Gibt es eine VB.NET Ausdruck, der immer liefert null
?
ein konkretes Beispiel zu geben, nehmen Sie die folgende Erklärung ab:
Dim o As Object = If(myBool, 5, ...)
Ist es möglich, ...
mit etwas zu ersetzen, so dass o
5
ist, wenn myBool
wahr ist und Nothing/null
wenn myBool
falsch ist ?
Offensichtliche Lösungen, die nicht funktionieren:
Nothing
(die Frage nach der verknüpften Antwort siehe oben),DirectCast(Nothing, Object)
(wirft einen Fehler bei der Kompilierung mit Option Strict On),DirectCast(Nothing, Integer?)
funktioniert für dieses Beispiel, funktioniert aber nicht im Allgemeinen (wenn Sie in diesem Beispiel5
durch5.0
ersetzen, müssen Sie die Besetzung ändern).
Offensichtliche Abhilfen (wird nicht als Antworten count):
Object
eine Variable oder ein Feld Deklarieren, stellen aufNothing
und verwendet diesen für...
,- eine Methode oder Eigenschaft definieren, die immer gibt
Nothing
, DirectCast
den zweiten Parameter (5
) zuObject
zurück.
Hinweis: Das obige Beispiel ist nur ein Beispiel. Die Frage selbst ist fett geschrieben.
Möchten Sie einen Einzeiler, der sowohl für Referenz- als auch für Werttypen verwendet werden kann? Was ist, wenn der Werttyp nicht nullfähig ist? Können Sie die _usage_ dieses Codes anzeigen? – CodeCaster
Ihre Frage ist nicht so klar, warum müssen Sie immer 'null' bekommen? Was ist falsch daran, einen NULL-fähigen Typ anstelle eines Objekts zu verwenden? Wenn Ihr Beispiel \t austauschbar ist, stellen Sie ein besseres Beispiel zur Verfügung, wo 'Int32?' Keine Option ist. –
@TimSchmelter: Ich kann mir vorstellen, dass sowas beim Schreiben eines automatisierten C# -> VB.NET Konverters nützlich sein könnte, aber hauptsächlich bin ich nur neugierig. Ich sehe nicht, wie die Frage unklar ist: "VB.NET-Ausdruck" ist wohldefiniert, und der gewünschte Rückgabewert des Ausdrucks ist in der Frage klar angegeben. – Heinzi