Pull to refresh

Comments 16

Про switch не понял, у меня компилятор ниче не разрешает такого сделать.
Компилятор позволяет завершать секцию не только break'ом, но и
goto, return, throw, yield break, continue или даже бесконечным циклом
Завершать секции по-прежнему необходимо.
void Main()
{
int a = 1;
switch(a)
{
case 1: Console.WriteLine(1); return;
case 2: Console.WriteLine(2); throw new Exception();
case 3: Console.WriteLine(3); for(;;);
case 4: Console.WriteLine(4); goto Label;
}
Label:Console.WriteLine(5);
}

Этот код компилируется.
Это замечательно, но какое это имеет отношение к реальной жизни?
Может и не имеет, но знать думаю не помешает…
Вы в реальной жизни switch не используете? Ну, про goto загиб, да, но в остальном вполне юзабельно.
Я пробовал continue и не получалось.
Клевый дядька, чего только стоит его блог и ответы на StackOverflow
C# 1.0 начинал как достаточно простой, современный язык программирования. Очевидно, он ощутил на себе влияние языков C и C++

Java? Нет, не слышал.
У C# было много вдохновителей, но большее влияние скорее delphi, чем java
Ага, bytecode и garbage collection — конечно delphi.
bytecode И garbage collection были и до Java.
Никто не спорит, что C# испытал влияние Java, но Delphi так же оказал не меньшее влияние (Создатель Delphi Андерс Хейелсберг — создатель C# )
А научите меня небезопасной ковариантности массивов =(
А то мне теперь это покоя не дает, что это можно, а я даже не знаю как…
class Animal {}
class Giraffe : Animal {}
class Dog : Animal {}
 
public class Test
{
    static void Main(string[] args)
    {
        Giraffe[] giraffes = new Giraffe[5];
        giraffes[0] = new Giraffe();
        Animal[] animals = giraffes;
        animals[1] = new Dog();
    }
}

ideone.com/GOWJ3W
Что интересно, в Java гораздо хуже ситуация с generic'ами, которые при компиляции вычищаются и в рантайме получаем вместо List<Giraffe> обычный List, в который можно поместить объект любого типа без всяких исключений. Проблема обнаружится только при приведении типов в процессе вытаскивания «жирафов» из списка.
List<Giraffe> giraffes = new ArrayList<Giraffe>();
List list = giraffes;
list.add(new Dog()); // No exception
Giraffe giraffe = giraffes.get(0);  // java.lang.ClassCastException: Dog
Sign up to leave a comment.

Articles