6 EKİM 2008, PAZARTESİ
Deyimi C fallthrough anahtarı#?
Switch deyimi fallthrough switch vs if/else if yapıları sevmek için kişisel benim büyük nedenlerinden biri. Örnek olarak:
static string NumberToWords(int number)
{
string[] numbers = new string[]
{ "", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine" };
string[] tens = new string[]
{ "", "", "twenty", "thirty", "forty", "fifty",
"sixty", "seventy", "eighty", "ninety" };
string[] teens = new string[]
{ "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
"sixteen", "seventeen", "eighteen", "nineteen" };
string ans = "";
switch (number.ToString().Length)
{
case 3:
ans = string.Format("{0} hundred and ", numbers[number / 100]);
case 2:
int t = (number / 10) % 10;
if (t == 1)
{
ans = teens[number % 10];
break;
}
else if (t > 1)
ans = string.Format("{0}-", tens[t]);
case 1:
int o = number % 10;
ans = numbers[o];
break;
default:
throw new ArgumentException("number");
}
return ans;
}
Akıllı insanlar string[]s işlevi dışında beyan edilmelidir çünkü yalaka: Peki, bu sadece bir örnek.
Derleyici aşağıdaki hata ile başarısız:
Control cannot fall through from one case label ('case 3:') to another
Control cannot fall through from one case label ('case 2:') to another
Neden? Ve orada ifüç s kalmadan bu tür davranış almak için herhangi bir yolu var mı?
CEVAP
6 EKİM 2008, PAZARTESİ
(Kopyala/) answer I provided elsewhere bir yapıştır
Düşme ile switch-cases elde edilebilir bir kod bir case (case 0), ya da kullanma özel goto case (case 1) veya goto default (case 2) formlar:
switch (/*...*/) {
case 0: // shares the exact same code as case 1
case 1:
// do something
goto case 2;
case 2:
// do something else
goto default;
default:
// do something entirely different
break;
}
Bunu PaylaÅŸ:

Neden't Dize deyimi destek boÅŸ bi...
C# deyimi sınırlamalar - neden?anahtar...
Ne ile iliÅŸkilendirilebilir bir dizi d...
Nasıl tek bir ALTER TABLE deyimi ile b...
Nasıl benim C için bir ürün anahtarı o...