C# 8.0'dan önce, tüm referans türleri null olabilirdi. Null referans tipleri, C# 8.0'da tanıtılan ve şu amaçlarla kullanılabilen bir dizi özellik setini ifade ederKodunuzun çalışma süresi kaybına neden olma olasılığını en aza indirin。 Nullable referans tipleri, bu istisnaları önlemek için üç özellik içerir; bunlar arasında referans türlerinin açıkça nullable olarak işaretlenmesi imkanı da vardır:
- Bir değişkenin referans olmadan önce null olup olmadığını belirlemek için optimize edilmiş statik akış analizi.
- API'yi not etmek için kullanılan nitelikler, böylece Stream Analytics null durumu belirler.
- Geliştiricilerin bir değişkenin beklenen null durumunu açıkça ilan etmek için kullanabileceği değişken açıklamaları.
Mevcut projeler için null state analizi ve değişken açıklamaları varsayılan olarak devre dışı bırakılır, bu da tüm referans türlerinin hâlâ nullable olduğu anlamına gelir. .NET 6'dan itibaren bu özellikler yeni projeler için varsayılan olarak etkinleştirilmiştir.
Belge:Bağlantı girişi görünür.
Null olabilecek bir referans tipi ne yapmak olurUygulamanızın çalışma zamanında bir System.NullReferenceException atma ihtimalini en aza indirin。
.NET 6 ile geliştirdiğim bir projede, yeni bir özellik için bir Name özelliği oluşturuyorum ve bu özellik bana şu uyarıyı verir:
Yapıcından çıkarken, sıfırlanamayan "Name" özelliği null olmayan bir değer içermelidir. Mülkü geçersiz olarak ilan etmeyi düşünün.
Uyarı olsa da, çok sinir bozucu! Bu uyarıyı nasıl düzeltebilirim? Atamanın varsayılan değeri boş bir dizidir ve kod şöyledir:
Yani, özellik manuel olarak atalmadığında, özelliğin varsayılan değeri boş bir dizidir.
Yerel bir değişken kullanılırken,Tip ip mi? Ayrıca uyarılar da oluşturabilir, aşağıdaki şekilde gösterildiği gibi:
çözüm, değişkenin null olup olmadığını kullanmadan önce belirleyin ve eğer öyleyse, aşağıdaki kodu çalıştırmayın, yoksa sizceDeğişken asla null olamaz, kullanılabilirArgumentNullException.ThrowIfNull(assemblyFullName); Uyarılar da kaldırılabilir! Yani, değişken null ise, çalışma zamanı sırasında doğrudan bir istisna atacaktır!
Özet: C# 8.0 bu özelliği tanıttı ve şahsen bunun geliştiricilerin titizliğini artırmak ve bazı düşük seviyeli hatalardan kaçınmak için olduğunu düşünüyorum.
Null olabilecek daha fazla yöntem çözümü için lütfen şu adrese bakınız:Bağlantı girişi görünür.
|