--- lang: ja-jp breaks: true --- # C# 後ろのビックリマーク `!` の意味 `null-forgiving 演算子` `(null 免除) 演算子` 2021-09-16 ## ! (null 免除) 演算子 > https://ufcpp.net/blog/2018/12/cs8nrt/ > https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-forgiving ```csharp= // 参照に循環があるとき、どうしても片方は最初から有効な参照にできない var a = new Node(null); // やむなくいったん null ``` ```csharp= // 非 null なところに null を渡すのを容赦してもらう var a = new Node(null!); ``` > null-forgiving演算子はあくまで「警告になるコードを無視してもらう」という処理です (そこが許容(able)と容赦(forgive)の差)。 コンパイル結果には何も影響を及ぼさないので、 間違ったコードを書くと普通にNullReferenceExceptionが出るようになります。 (実行時のチェック処理とかは別に何も挿入されません。) ###### tags: `C#` `ビックリマーク` `!` `C# 8.0` `null-forgiving 演算子` `(null 免除) 演算子`