With a method/function without any additional inside-blocks of code, all the variables are just local and they exist on the stack (with reference types it's the actual reference that's on the stack). But what about the variables declared in some sort of block inside the body of the method?
Are the variables declared inside such an inner block still initialized on the stack when the method is called, but it's just that the compiler is somehow smart, and only allows you use them when inside the block where they are declared? Or are such blocks of code actually treated as methods/functions in some sense? I.e. local variables of the outside scope are passed as arguments to the block, or something like that.