null安全

https://docs.microsoft.com/ja-jp/dotnet/csharp/nullable-references
https://eigoninaritai.com/null_safety_in_kotlin/
null安全は、Kotlin言語やC#8.0以降で実装されている機能。
コンパイル時に、変数へのnull代入や変数を通してメソッド呼び出しをする箇所について、「nullの可能性あり変数」であればビルド警告を出してくれる。
以下の「nullではない」条件に一致しない場合、「nullの可能性あり変数」である。
・nullを許容しない変数型の場合、それはnullではない。
・nullを許容する変数型の場合、その変数を利用する前にifなどで null でないチェックがされていれば、、それはnullではない。



この機能は有効にすれば絶対にNullPointerExceptionが出ないというものではなく、NullPointerExceptionが発生しうる多く箇所について警告を出してくれるガードレール的機能だと思う。
ガベージコレクションに近い便利さの機能という気がする。(ガベージコレクションがあれば絶対メモリリークが起きないわけではないが、あったほうが圧倒的に安全)

https://noxi515.hateblo.jp/entry/2019/10/22/194300#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E5%85%A8%E4%BD%93%E3%81%AB%E5%AF%BE%E3%81%97%E3%81%A6%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B
C#ではプロジェクト設定でnull安全の警告を出すかどうかを決められる。
警告を出す設定にした場合……。

object objA = null; // [object] はnullを設定できないため、以下は警告になる(null『非』許容参照型)
object? objB = null; // [object?]はnullを設定可能なため、以下は警告にならない(null許容参照型)