Если я посмотрю на IL, который создается в Linqpad для двух следующих фрагментов кода, мне интересно, что здесь происходит.
В C #
int i = 42;
получается следующий код IL
IL_0000: ret
, тогда как в VB
Dim i As Integer = 42
это
IL_0000: ldc.i4.s 2A
IL_0002: stloc.0
По-видимому, компилятор C # понимает, что значение никогда не используется, и поэтому просто ничего не возвращает. В VB.NET транслируется фактический код.
Это из-за различий в оптимизации компилятора или что-то еще работает?
Обновление: Просто чтобы прояснить это - я просто ввожу эту строку в LinqPad и смотрю на IL, который он создает (определенно запустив соответствующий компилятор). Нет программы .