投稿者 魔界の仮面弁士  (社会人) 投稿日時 2024/5/10 19:19:38
> 同じページの
> 2-4.null ではない!
> に解説されています。

後置き「!」演算子は、null 許容性判定を無視して、常に 非 null 扱いにするための物です。
null 寛大演算子とか、null 抑止演算子と呼ばれることもあります。

先の解説では
> ReadLine() の後ろについている ! は、「値が必ず存在することにする」という目印です。
> ! をつけて「ここは必ず値が入っている」ということをコンパイラーに伝えてこの警告を消します。
とありますが、実際には値が入っているのだと伝えているわけではなく、どちらかといえば
null かどうかをチェックするのを止めさせる、というニュアンスです。


#nullable enable
string? a = null ;  // 代入先が null を許容しているため、null を入れても問題無し
string  b = null ;  // 代入先が null 非許容なので、null の代入が警告される[CS8600]
string  c = null!;  // 代入先は null 非許容だが、後置 ! 演算子があるので null 検査は行われない
#nullable restore



> なお、ユーザーが何も入力せずに Enterキーを押した場合、空の文字列、つまり長さ0の文字列を取得することになりますが、これはC#の考え方では値がある状態です。

なお、Ctlr+Z を入力してから Enter キーを押した場合は、
「長さ 0 の文字列」ではなく「null」が返されます。