Neden't a '' deyim devam 'nihayet' blok içinde olabilir?
Bir sorun yok, sadece merak ediyorum. Aşağıdaki senaryoyu düşünün:
foreach (var foo in list)
{
try
{
//Some code
}
catch (Exception)
{
//Some more code
}
finally
{
continue;
}
}
Bu compiler error CS0157 yükseltir olarak derlemek olmaz:
Kontrol edemiyor nihayet bir madde bedeni terk
Neden?
CEVAP
finally
bir özel durum ya da engeller. Eğer bir özel durum, heck continue
ne yapardı? Olamaz yakalanmamış bir istisna başka bir işlev için Denetim transferi olacak çünkü döngü yürütme devam ediyor.
Eğer bir istisna, finally
try/içinde diğer kontrol transfer açıklamaları blok çalıştırmak yakalamaya çalışır, aynı sorun getiriyor return
, örneğin, gibi atılacak olsa bile.
finally
semantiği ile kısa, anlam dışına finally
bir blok içindeki kontrol transfer izin vermek için yapmaz.
Bazı alternatif semantiği ile bunu destekleyen basit olduğundan yararlı daha kafa karıştırıcı olacak amaçlanan davranış şeklini daha net hale getiren çözümler. Bir hata alıyorum, ve düzgün bir şekilde sorun hakkında düşünmek zorunda kalıyor. Genel "başarı çukura atmak" giden bir fikir C#.
Eğer özel durumlar (kötü bir fikir değil daha sık) göz ardı döngü yürütme devam etmek istiyorsanız, tüm blok yakalamak kullanın:
foreach ( var in list )
{
try{
//some code
}catch{
continue;
}
}
Eğer hiç yakalanmamış özel durum oluşturuldu, sadece 10 ** isterseniz, sadece dışarıdan continue
dene-blok koydu.
C ve C her ikisi içinde geçerli bir ko...
C 'nihayet' blok destekliyor...
Neden bir nihayet döndü değişken değiş...
performSelector onun seçici bilinmiyor...
Neden benim program tam olarak 8192 el...