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 disabledaha sonra #nullable enableveya restoredaha sonra kodunuzu sarabilirsiniz ( docs.microsoft.com/en-us/dotnet/csharp/… ).
!operatörünü kullanabilirsiniz. if(HasName) { Name = Name!.ToUpper(); }
HasValuenullable tipinde kullanmanız gerekirnull; Muhtemelen sorununuzu etkilemez.