If I have an object such as `List<string>` that I cast into an `object`, and then back again, will all the strings get cast as well or just the list that contains them?

I'm thinking that the compiler would only have to check if the `object` was of type `List<string>` before casting back into a `List<string>` but I grew up in C#, so I'm not entirely certain what goes on behind the code that I write.