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 .csprojfile, dan mulai mengkode. Saya membuat daftar sederhana yang mengambil string[]dan mengembalikan stringarray yang sama dengan itu abc. Sekarang, karena saya tidak yakin yang abcbenar - benar ada dalam array, saya menggunakan FirstOrDefault(), yang seharusnya default nulljika 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?