Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Unary sonek ! işleci null-affedici veya null baskılama işlecidir. Etkin bir null atanabilir ek açıklama bağlamında, null-forgiving işlecini kullanarak önceki ifadenin tüm null atanabilir uyarılarını gizleyin. Ünary ön ek ! operatörü, mantıksal olumsuzlama operatörüdür. Null-forgiving işlecinin çalışma zamanında hiçbir etkisi yoktur. Yalnızca ifadenin null durumunu değiştirerek derleyicinin statik akış analizini etkiler. Çalışma zamanında ifade x! , temel alınan ifadenin xsonucunu değerlendirir.
Daha fazla bilgi için "Null atanabilir başvuru türleri" özelliğine bakın: Null atanabilir başvuru türleri.
C# dili başvuru belgesi, C# dilinin en son yayımlanan sürümünü gösterir. Ayrıca, yaklaşan dil sürümü için genel önizlemelerdeki özelliklere yönelik ilk belgeleri içerir.
Belgelerde ilk olarak dilin son üç sürümünde veya geçerli genel önizlemelerde sunulan tüm özellikler tanımlanır.
Tavsiye
Bir özelliğin C# dilinde ilk tanıtıldığı zamanları bulmak için C# dil sürümü geçmişi makalesine bakın.
Örnekler
Null-forgiving işleci için bir kullanım örneği, bağımsız değişken doğrulama mantığını test ediyor. Örneğin, aşağıdaki sınıfı göz önünde bulundurun:
#nullable enable
public class Person
{
public Person(string name) => Name = name ?? throw new ArgumentNullException(nameof(name));
public string Name { get; }
}
MSTest test çerçevesini kullanarak oluşturucuda doğrulama mantığı için aşağıdaki testi oluşturabilirsiniz:
[TestMethod, ExpectedException(typeof(ArgumentNullException))]
public void NullNameShouldThrowTest()
{
var person = new Person(null!);
}
Null-forgiving işleci olmadan, derleyici önceki kod için aşağıdaki uyarıyı oluşturur: Warning CS8625: Cannot convert null literal to non-nullable reference type. null-forgiving işlecini kullanarak, derleyiciye geçişin null beklendiğini ve uyarı oluşturmaması gerektiğini bildirirsiniz.
İfadenin mümkün olmadığını null ancak derleyicinin bunu tanımadığını kesinlikle bildiğinizde null-forgiving işlecini de kullanabilirsiniz. Aşağıdaki örnekte, IsValid yöntemi true döndürürse, bu yöntemin bağımsız değişkeni null değildir ve onu güvenle derefreans edebilirsiniz.
public static void Main()
{
Person? p = Find("John");
if (IsValid(p))
{
Console.WriteLine($"Found {p!.Name}");
}
}
public static bool IsValid(Person? person)
=> person is not null && person.Name is not null;
Null-forgiving işleci olmadan, derleyici kod için aşağıdaki uyarıyı p.Name oluşturur: Warning CS8602: Dereference of a possibly null reference.
Eğer IsValid metodunu değiştirebiliyorsanız, NotNullWhen özelliğini kullanarak derleyiciye IsValid metodunun döndüğünde bağımsız değişkenin null olamayacağını bildirebilirsiniz:
public static void Main()
{
Person? p = Find("John");
if (IsValid(p))
{
Console.WriteLine($"Found {p.Name}");
}
}
public static bool IsValid([NotNullWhen(true)] Person? person)
=> person is not null && person.Name is not null;
Yukarıdaki örnekte, derleyicinin p'in null deyimi içinde if olamayacağını bilmesi için yeterli bilgiye sahip olmasından dolayı, null-forgiving işlecini kullanmanız gerekmez. Bir değişkenin null durumu hakkında ek bilgi sağlamanıza olanak sağlayan öznitelikler hakkında daha fazla bilgi için bkz . Null beklentileri tanımlamak için API'leri özniteliklerle yükseltme.
C# dili belirtimi
Daha fazla bilgi için null-forgiving işleci bölümüne, null atanabilir başvuru türleri belirtiminin taslağındaki bakın.