C#8.0 の新しいnull許容参照型機能をテストしたかったのです。
.NET Core 3.0を対象とする新しいプロジェクトを開始し、.csproj
ファイルでnull許容の参照型を有効にして、コーディングを開始しました。私はaを取り、その配列に等しいstring[]
を返す単純なリストを作成しました。ここで、配列に実際に存在するかどうかは定かでないので、を使用します。これは、一致が見つからない場合にデフォルトになるはずです。string
abc
abc
FirstOrDefault()
null
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
私のメソッドはを返しますstring
。これはnullにできないタイプになっているはずです。nullFirstOrDefault()
が返される可能性があるのでnull
、上記のメソッドはnull の可能性があるarg
変数を返すときに警告を生成することを期待します。ありません。
FirstOrDefault()
Visual Studioでのシグネチャを見ると、その理由は明らかです。メソッドが返すのはstring
、string?
私が期待するnullに対応する同等のものではありません。
以下のメソッド本体を使用すると、期待した警告が表示されます。
var arg = args.Contains("abc") ? "abc" : null;
return arg;
(この例のSystem.Linq
)システムライブラリは、.NET Core 3.0を対象とする場合、null可能性情報を実際に公開しませんか?