Saya ingin menguji fitur jenis referensi nullable baru di C # 8.0.
Saya memulai proyek baru yang menargetkan .NET Core 3.0, mengaktifkan jenis referensi yang tidak dapat dibatalkan dalam .csproj
file, dan mulai mengkode. Saya membuat daftar sederhana yang mengambil string[]
dan mengembalikan string
array yang sama dengan itu abc
. Sekarang, karena saya tidak yakin yang abc
benar - benar ada dalam array, saya menggunakan FirstOrDefault()
, yang seharusnya default null
jika kecocokan tidak ditemukan.
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
Metode saya mengembalikan string
, yang seharusnya sekarang menjadi tipe yang tidak dapat dibatalkan . Karena FirstOrDefault()
dapat kembali null
, saya akan mengharapkan metode di atas untuk menghasilkan peringatan ketika mengembalikan variabel mungkin nol arg
. Itu tidak.
Melihat tanda tangan untuk FirstOrDefault()
di Visual Studio, jelas mengapa : Metode mengembalikan a string
, bukan setara nullable yang string?
saya harapkan.
Menggunakan tubuh metode di bawah ini menghasilkan peringatan yang saya harapkan:
var arg = args.Contains("abc") ? "abc" : null;
return arg;
Apakah pustaka sistem (dalam contoh ini System.Linq
) benar-benar tidak memaparkan informasi nullability ketika menargetkan .NET Core 3.0?
sumber