If you tried to run the Method call SunIsShining(happiness);  without assigning it to happiness you might have realized, that happiness itself is changed. Why is that?

Arrays are a reference type in C#. This means that each time an array is passed as an argument to any function, the reference (or pointer) to the argument is passed to the function. Thus any modifications you make to the array in the function are made in the actual argument also