Looking at the code, it appears to be by design, though not explictly documented - it probably should be. Something to note is if you specifically ask for a string in the foreach, it will refuse to compile - the compiler knows it is a mutable char[] too.