【Unity】アセンブリ単位でNullable Reference Types(null 参照許容型)を有効にする

Unityでアセンブリ単位でNullable Reference Types(null 参照許容型)を有効にする方法です。

Unity6000.3.6f1

Nullable Reference Typesとは?

現状のUnity環境のC#では、デフォルトでは参照型にnullを入れることができます。

public sealed class Example
{
    public string Foo { get; set; } = null;
}

Nullable Reference Types(null 許容参照型)を有効にすると、明示的にnullを許容する型で変数を宣言せずにnullを代入すると、コンパイル時に警告になったりエラーになったりします。

つまり、上記のコードでは警告またはエラーが出ます。これを消すには、以下のように string を string? に書き換える、つまり Nullable Reference Types に変更する必要があります。

public sealed class Example
{
    public string? Foo { get; set; } = null;
}

Nullable Reference Typesを有効にする

Nullable Reference Types を有効にするには、以下のような内容のファイルを作成します。

-nullable:enable

そしてこれを、有効にしたいAssembly Definitionファイルと同じ階層に、csc.rspというファイル名で保存します。

警告をエラーに変える

上記の手順で、非null許容参照型の変数に対してnullが代入されるコードを書くと、警告が出るようになります。

もしこの警告をコンパイルエラーに変えたい場合は、以下のように csc.rsp を書き直します。

-nullable:enable
-warnaserror:nullable