VBでは 値型変数 = Nothing と書いてもコンパイルが通ります。(strict on でも)
Dim i as integer = Nothing
C#では 値型変数 = null; と書くとコンパイラに叱られます。
int i = null;
言語仕様なんでしょうが、変数の初期化ルーチンで
Dim 支払金 as Decimal
支払金 = Nothing
Dim 日付 as date
日付= Nothing
などと書かれたソースを見かけると違和感一杯。Nothingは参照型でのみ意味を持つと思うのです。
初心者は変数等の参照型と値型で躓く人がいるのに、混乱するような記述を容認しているのは何故だろう。
これも過去の文法を引きずっているのだろうか。
過去の構文の互換性は大事ですが、保っている部分とバサッと切り捨てた部分の境界基準って何でしょうね。雰囲気だったりして。
旧VB環境を抹消したので、確認取れてませんか、初期化しない状態だと Clear値(数字なら0,文字ならNothing)と言うのがあったような。その延長線上に = Nothingがあるような。
あいまいな部分かありますね.....(補足)Syntax Sugarを [あいまいな文法]と誤解しているひとが周囲にいました。糖衣の意味でアイマイではありませんので念のため。