C # 8.0 yeni nullable başvuru türleri özelliğini sınamak istedim .
.NET Core 3.0'ı hedefleyen yeni bir proje başlattım, .csproj
dosyada nullable başvuru türlerini etkinleştirdim ve kodlamaya başladım. Ben alır string[]
ve string
o dizi eşittir basit bir liste oluşturdu abc
. Şimdi, abc
aslında dizide var olduğundan emin değilim FirstOrDefault()
, null
bir eşleşme bulunmazsa varsayılan olması gereken kullanın .
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
Yöntemim string
, şimdi null edilemeyen tür olması gereken döndürüyor . Geri döndüğünden beri , belki null değişkeni döndürürken yukarıdaki yöntemin bir uyarı vermesini beklerdim . O değil.FirstOrDefault()
null
arg
FirstOrDefault()
Visual Studio'da imza bakarak, neden açıktır : Yöntem beklediğim string
boş değer eşdeğeri değil, a döndürür string?
.
Aşağıdaki yöntem gövdesinin kullanılması beklediğim uyarıyı verir:
var arg = args.Contains("abc") ? "abc" : null;
return arg;
Sistem kitaplıkları (bu örnekte System.Linq
), .NET Core 3.0'ı hedeflerken gerçekten güvenlik açığı bilgilerini göstermiyor mu?