Gibt es einen VB.NET-Ausdruck, der * immer * null ergibt?
Wir alle wissen, dass VB'sNothing
ist ähnlich, aber nicht äquivalent zu C #null
. (Wenn Sie sich dessen nicht bewusst sind, schauen Sie sich andiese Antwort zuerst.)
Aus Neugier möchte ich Folgendes wissen:
Gibt es einen VB.NET-Ausdruck, der immer ergibtnull
?
Um ein konkretes Beispiel zu geben, nehmen Sie die folgende Aussage:
Dim o As Object = If(myBool, 5, ...)
Ist es möglich zu ersetzen...
mit etwas, so dasso
ist5
wannmyBool
ist wahr undNothing/null
wannmyBool
ist falsch?
Offensichtliche Lösungen, die nicht funktionieren:
Nothing
(siehe die Frage zur verknüpften Antwort oben),DirectCast(Nothing, Object)
(wirft einen Kompilierungsfehler mit Option Strict On aus),DirectCast(Nothing, Integer?)
funktioniert für dieses Beispiel, funktioniert aber nichtim Allgemeinen (wenn Sie ersetzen5
mit5.0
In diesem Beispiel müssten Sie die Besetzung ändern.Offensichtliche Problemumgehungen (gelten nicht als Antworten):
Deklarieren Sie eineObject
Variable oder Feld, setzen Sie es aufNothing
und benutze das für...
,Definieren Sie eine Methode oder Eigenschaft, die immer zurückgegeben wirdNothing
,DirectCast
der zweite Parameter (5
) bisObject
.Hinweis: Das obige Beispiel ist nur ein Beispiel. Die Frage selbst ist fett geschrieben.