single.php

C# WinUI 3アプリで「注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。」警告を解消する方法

C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで、変数を定義する部分で「warning CS8632: ‘#nullable’ 注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。」警告が解消できない場合の修正方法です。

Null許容参照型の注釈を使用

C#の新しい機能で、変数がNullの場合を想定したコーディングを目的にしたNull許容参照型が登場しました。

例えば、次のようなコードを書くと警告が表示されるようになっています。

string value = null;

普通にコードを書いていて、こんな記載をすることはありませんが、次のコードのように右辺が関数からの戻り値というケースは考えられます。

string value = function();

最終的にはNULLチェックをしなくても良くなる、凄く良い機能なんですが、古いコードを開いてデバッグ作業しようとすると、表示される警告の多さに驚かされる場合もあります。

例えば、Win32でレジストリキーを取得する際のコードなども、警告の対象になります。

Microsoft.Win32.RegistryKey rKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(sKeyName);

こんな時に、変数文字の後に「?」を追加してNull許容型にすることで回避できる場合があります。

Microsoft.Win32.RegistryKey rKey? = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(sKeyName);

これでは、使い辛いのでボタンと重ならないようタブ幅を調整していきます。

警告が止まらない場合は#nullableコメント

Null許容型を使っても警告が表示される場合には#nullableコメントで一時的に機能を抑制して非表示にできます。

警告なので無視してもビルドやデバッグ実行ができるので、あくまで警告表示が気になる人向けです。

#nullable disable

Microsoft.Win32.RegistryKey rKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(sKeyName);

#nullable enable

こんな感じでコメントを追加する要領で、一時的に機能を抑制することで警告表示を非表示にすることが可能です。

まとめ

今回は短い記事ですが、WinUI3プロジェクトで、ビルドした際に、変数定義部分で「注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。」が表示を解消する方法を書きました。

[#nullable disable]~[#nullable enable]を追加して一時的に、機能を抑制することで警告を非表示にできます。(警告が無くなる訳ではないので注意)

C#のWinUI 3アプリのプロジェクトで、ビルド時に「注釈コンテキスト内のコードでのみ、Null 許容参照型の注釈を使用する必要があります。」警告が気になる人の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です