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.
Tip
Bu makale, en az bir programlama dili bilen ve C# dilini öğrenen geliştiriciler için Temel Bilgiler bölümünün bir parçasıdır. Desenleri kullanmaya yeni başladıysanız desen eşleştirmeye genel bakış ile başlayın. Tam söz dizimi için yok sayma düzeni başvurusuna bakın.
Alt çizgi belirteci (_), bir değerin gerekli olmadığını belirtir. Tam anlamı nerede göründüğüne bağlıdır:
| Context |
_ anlamı |
|---|---|
| Bir switch ifadesi dalı veya iç içe geçmiş desen | Sonucu yakalamadan eşleşen bir yoksayma deseni |
Bir dekonstrüksiyon veya out argüman |
Üretilen bir değeri yok sayan yok sayma |
Aşağıdaki gibi bir atama _ = expression |
İfadeyi değerlendiren ve sonucunu yok sayan bir yok sayma ataması |
_ adlı iki veya daha fazla lambda parametresi |
Kullanılmayan girdilere sahip parametreleri yok say |
var _ bir düzende |
Bir var yok sayma belirteci içeren desen |
Bu formlar yazım ve amacı paylaşır, ancak birbirinin yerine kullanılamaz.
switch ile desen eşleştirme
Aşağıdaki örnekte, statusCode bir intşeklindedir. Her anahtar kolu, programın konsola yazdığı bir string ileti oluşturur. Sonuncusu _, 404 ve 200 dışındaki tüm durum kodlarını işler:
static void ShowStatus()
{
int statusCode = 503;
string message = statusCode switch
{
200 => "Ready",
404 => "Not found",
_ => "Another status"
};
Console.WriteLine(message);
}
Bir giriş ifadesine yok sayma deseni uygulanır. C#, ifadeyi değerlendirir ve _, değerlendirilen değerle onu yakalamadan eşleşir. Daha önce işlenmeyen tüm değerler için aynı yedek seçeneğin kullanılması gerektiğinde, son switch ifadesi kolu olarak _ seçin. En sona koy çünkü null dahil her şeyle eşleşir.
var _ biçimi, yok sayma belirleyicisine sahip bir var örüntüsüdür. Ayrıca, değerlendirilen her değerle eşleşir, ancak okunabilir bir değişken sunmaz. switch ifadesindeki varsayılan durum için daha kısa _ yok sayma desenini tercih edin. Desenler ve tanımlamalar hakkında daha fazla bilgi var için bkz. Bildirim, sabit ve var desenler.
Yapı bozma bildirimleri
GetForecast dört bileşenli bir demet döndürür: string bir şehir ve yüksek sıcaklık, düşük sıcaklık ve yağmur olasılığı için üç int değer. Deconstruction bildirimi, program bunları görüntülediği için high ve city öğelerini korur. Düşük sıcaklık ve yağmur şansı için kullanır _ çünkü kullanılmayan bileşenleri adlandırmak kodun bunlara ihtiyacı olduğunu gösterir:
static void ShowForecast()
{
var (city, high, _, _) = GetForecast();
Console.WriteLine($"{city}: high {high}°C");
static (string City, int High, int Low, int RainChance) GetForecast() =>
("Portland", 18, 9, 40);
}
Bir nesnenin Deconstruct yöntemi birden çok değer ürettiğinde de aynı göz ardı etme söz dizimi geçerlidir. Bu biçimler için bkz. Demetlerin ve diğer türlerin ayrıştırılması.
out parametreleriyle yöntem çağrıları
Giriş alanının yalnızca bir tamsayıyı temsil ettiğinde metin kabul ettiği varsayıldığında. yöntemi, TryParse(String, Int32) ayrıştırma işleminin başarılı olup olmadığını bildiren bir bool döndürür. Ayrıca, ayrıştırılmış out öğesini int parametresi aracılığıyla üretir. Aşağıdaki kodun girişi kabul etmesi veya reddetmesi için yalnızca Boole sonucu gerekir:
static void CheckInput()
{
string text = "42";
if (IsWholeNumber(text))
{
Console.WriteLine($"Accepted: {text}");
}
else
{
Console.WriteLine("Enter a whole number.");
}
static bool IsWholeNumber(string text) => int.TryParse(text, out _);
}
Yalnızca işlemin başarısı önemli olduğunda kullanın out _ . Değeri göz ardı etmek, ayrıştırılan sayının gerekmediğini açıkça gösterir. Daha sonra kodun sayıya ihtiyacı varsa, bağımsız değişkene out gibi out int numberbir ad verin ve bunun yerine bu değeri koruyun.
Atma ataması, _ = expression bir ifadeyi değerlendirir ve sonucunu bilerek yok sayar. İfade başka bir şekilde geçerli bir deyim olmadığında bazen yararlıdır.
Important
Uygulama kodunda bir görevi göz ardı etmek için _ = SomeAsyncMethod() veya _ = Task.Run(...) kullanmayın. Tamamlanmasının ve özel durumların çağrı akışında kalması için görevi bekleme. Yok sayma ataması, bir görevi güvenli kılmaz, özel durumunun gözlemlenmesini sağlamaz veya desteklenen bir unut ve devam et işlemi oluşturmaz.
Kullanılmayan lambda parametrelerini işaretleme
Bir EventHandler, bir EventArgs göndereni ve bir object? değeri alır. Aşağıdaki işleyici iki parametreye de ihtiyaç duymaz; yalnızca konsola "Timer tick" yazar. Her iki parametreyi de _ olarak adlandırmak, gövdenin hiç kullanmadığı adlar uydurmadan kullanılmadıklarını görünür kılar:
static void ShowLambdaDiscards()
{
EventHandler handler = (_, _) => Console.WriteLine("Timer tick");
handler(null, EventArgs.Empty);
}
Temsilci imzası, lambda gövdesinin kullanmadığı girdiler gerektirdiğinde “Göz ardı parametreleri” seçeneğini belirleyin. Bir lambda ifadesinin adı _ olan yalnızca bir parametresi varsa, _ geriye dönük uyumluluk için normal bir parametre adı olarak kalır.
_ öğesini tanımlayıcı olarak kullanmayın
_ , C# öğesinin atma tanımadığı bağlamlarda sıradan bir tanımlayıcı olabilir. Kapsamda bulunan _ adlı değişken, yok sayma ataması gibi görünen bir atama alabilir. Desen bağlamında, _ adlı erişilebilir bir sabit veya tür de _’in nasıl yorumlandığını değiştirebilir.
_ adlı kendi değişkenlerinizi, sabitlerinizi veya türlerinizi bildirmekten kaçının; yok sayma niyetini belirtmek için _ kullanın.