Aracılığıyla paylaş


when (C# başvurusu)

when Aşağıdaki bağlamlarda bir filtre koşulu belirtmek için bağlamsal anahtar sözcüğünü kullanın:

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.

when catch yan tümcesinde

when Belirli bir özel durumun yürütülmesi için işleyici için doğru olması gereken bir koşul belirtmek üzere catch yan tümcesinde anahtar sözcüğünü kullanın. Söz dizimi şöyledir:

catch (ExceptionType [e]) when (expr)

burada ifade , Boole değeri olarak değerlendirilen bir ifadedir. döndürürse true, özel durum işleyicisi yürütülür; değilse falseyürütülür.

anahtar sözcüğüne when sahip özel durum filtreleri, daha iyi hata ayıklama desteği ve performans avantajları da dahil olmak üzere geleneksel özel durum işleme yaklaşımlarına göre çeşitli avantajlar sağlar. Özel durum filtrelerinin çağrı yığınını nasıl koruduğuna ve hata ayıklamayı nasıl geliştirdiğine ilişkin ayrıntılı bir açıklama için bkz . Özel durum filtreleri ve geleneksel özel durum işleme.

Aşağıdaki örnek, özel durum iletisinin when metnine bağlı olarak bir HttpRequestException için işleyicileri koşullu olarak yürütmek için anahtar sözcüğünü kullanır.

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static void Main()
    {
        Console.WriteLine(MakeRequest().Result);
    }

    public static async Task<string> MakeRequest()
    {
        var client = new HttpClient();
        var streamTask = client.GetStringAsync("https://localHost:10000");
        try
        {
            var responseText = await streamTask;
            return responseText;
        }
        catch (HttpRequestException e) when (e.Message.Contains("301"))
        {
            return "Site Moved";
        }
        catch (HttpRequestException e) when (e.Message.Contains("404"))
        {
            return "Page Not Found";
        }
        catch (HttpRequestException e)
        {
            return e.Message;
        }
    }
}

Ayrıca bakınız