[解決済み] DateTime'が'Nothing'であるかどうかをチェックできないのはなぜですか?
2023-06-16 05:31:07
質問
VB.NETで、以下のように
DateTime
変数を "notset"に設定する方法はありますか?また、なぜ
DateTime
を
Nothing
が、しかし
ではなく
であるかどうかを確認することは可能です。
Nothing
? 例えば
Dim d As DateTime = Nothing
Dim boolNotSet As Boolean = d Is Nothing
2番目のステートメントがこのエラーを投げます。
'Is' operator does not accept operands of type 'Date'. Operands must be reference or
nullable types.
どのように解決するのですか?
これは、VB.Net の最大の混乱の原因の 1 つだと思います。
Nothing
というのは、VB.Netでは
default(T)
と等価であり、与えられた型のデフォルト値です。
-
値型の場合、これは本質的に「ゼロ」に相当します。
0
に対してInteger
,False
に対してBoolean
,DateTime.MinValue
に対してDateTime
, ... -
参照型の場合は
null
値 (まあ、何も参照しない参照) になります。
ステートメントが
d Is Nothing
は次のようになります。
d Is DateTime.MinValue
と同じで、明らかにコンパイルできません。
解決策:他の人が言っているように
-
次のいずれかを使用します。
DateTime?
(を使うか(例Nullable(Of DateTime)
). これは私が推奨する解決策です。 -
または使用する
d = DateTime.MinValue
または同等にd = Nothing
元のコードの文脈では、使えます。
Dim d As DateTime? = Nothing
Dim boolNotSet As Boolean = d.HasValue
より包括的な説明は アンソニー・D・グリーンのブログ
関連
-
[解決済み] VB.NET: DataGridViewをクリアする
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] C#でHashtableよりDictionaryが好まれる理由とは?
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み】MySQLのDatetimeカラムにデフォルト値を設定する方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] public subの呼び出し時に、非共有メンバーの参照にオブジェクト参照が必要となる
-
[解決済み] VB.NETのAndとAndAlsoの違いは何ですか?
-
[解決済み] インデックスが配列の範囲外であった
-
[解決済み] VB.NET: DataGridViewをクリアする
-
[解決済み] VB.NETで条件付き三項演算子はありますか?
-
[解決済み] VB.NET IntelliSense : ENTERオートコンプリートで改行を無効にする
-
[解決済み] VBは本当に大文字小文字を区別しないのですか?
-
[解決済み] BOM(バイトオーダーマーク)なしでテキストファイルを書き込むには?
-
[解決済み] .NET CoreがWindows 1252を認識しない、修正方法は?
-
[解決済み] OrとOrElseの比較