Aşağıdaki kodu göz önünde bulundurun:
#nullable enable
class Foo
{
public string? Name { get; set; }
public bool HasName => Name != null;
public void NameToUpperCase()
{
if (HasName)
{
Name = Name.ToUpper();
}
}
}
Name = Name.ToUpper () üzerinde adı açıkça yanlış olan olası bir boş başvuru olduğuna dair bir uyarı alıyorum. HasName'i satır içine alarak bu uyarıyı iyileştirebilirim, böylece durum (Name! = Null).
Derleyiciye HasName'den gelen gerçek bir yanıtın Ad üzerinde bir kuralsızlık kısıtlaması gerektirdiğini söyleyebilmemin bir yolu var mı?
Bu önemlidir çünkü HasName aslında çok daha fazla şeyi test edebilir ve bunu birkaç yerde kullanmak isteyebilirim veya API yüzeyinin herkese açık bir parçası olabilir. Null kontrolü kendi yöntemine dahil etmek için birçok neden vardır, ancak bunu yapmak null edilebilir referans denetleyicisini bozuyor gibi görünmektedir.
#nullable disable
daha sonra #nullable enable
veya restore
daha sonra kodunuzu sarabilirsiniz ( docs.microsoft.com/en-us/dotnet/csharp/… ).
!
operatörünü kullanabilirsiniz. if(HasName) { Name = Name!.ToUpper(); }
HasValue
nullable tipinde kullanmanız gerekirnull
; Muhtemelen sorununuzu etkilemez.