I do not understand what is meant by the terms "compile time" and "run time" (or "runtime").
I'm also a bit confused about what "value type" and "reference type" mean, and how they relate to the 'times mentioned above.
Would someone please explain these things?
"Compile time" is when you build your code - when the compiler converts your source code into IL.
"Runtime" is when your code is executed - for ASP.NET, when a page request is made. (Personally I prefer the term "execution time" to distinguish between that and "the Common Language Runtime (CLR)" - aka the virtual machine.)
Value types and reference types are an entirely separate concept, but I have an article about them which you may find useful.