Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
when A környezeti kulcsszóval szűrőfeltételt adhat meg a következő környezetekben:
- Egy vagy
try-catchtöbb utasítás fogási záradékábantry-catch-finally. -
Esetőrként a
switchvallomásban. -
Esetőrként a
switchkifejezésben.
A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.
A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.
Jótanács
Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.
when fogási záradékban
when A fogási záradékban szereplő kulcsszóval megadhat egy feltételt, amelynek igaznak kell lennie a kezelő számára egy adott kivétel végrehajtásához. Szintaxisa:
catch (ExceptionType [e]) when (expr)
ahol az expr egy logikai értékre kiértékelt kifejezés. Ha visszaadja true, a kivételkezelő végrehajtja; ha false, akkor nem.
A kulcsszóval rendelkező kivételszűrők számos előnnyel rendelkeznek a when hagyományos kivételkezelési megközelítésekkel szemben, beleértve a jobb hibakeresési támogatást és a teljesítménybeli előnyöket. A kivételszűrők a hívásverem megőrzésének és a hibakeresés javításának részletes ismertetését a Kivételszűrők és a hagyományos kivételkezelés című témakörben találja.
Az alábbi példa a kulcsszót használja a when kezelők feltételes végrehajtására HttpRequestException a kivételüzenet szövegétől függően.
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;
}
}
}