Дефиниране на променливи в case
Работя над девета задача от домашното и се сблъсквам с нещо, което не мога да си обясня:
switch(type)
{
case (1):
Console.WriteLine("Please enter an int: ");
int a = int.Parse(Console.ReadLine());
Console.WriteLine(a + 1);
break;
case (2):
Console.WriteLine("Please enter a double: ");
double a = double.Parse(Console.ReadLine());
Console.WriteLine(a + 1);
break;
}
Извежда ми съобщение, че а вече е дефинирана. В това няма особена логика, тъй като switch би трябвало да изпълнява САМО ЕДИН case. Тоест след като е стигнало до case 2 то няма как да е декларирало променливата а в case 1.
Разбира се, не е проблем да използваме друга променлива във втория случай, но ми е любопитно каква логика следва Вижуал Студио, за да не ми позволи да декларирам променлива със същото наименование във втория случай.
Да, получи се, благодаря ти. Макар че според мен е логично да стане и без скоби, понеже, за разлика от if, case така или иначе изпълнява всички редове след кейса до break. Явно просто така е хрумнало на Майкрософт.
В езиците са програмиране се гледа началото { и края на блока }.
Например в Pascal блоковете започват с Begin и завършват с End